Version courte:LINQ ou XSLT pour transformer un élément en un autre dans Visual Basic 9
Quelqu'un pourrait-il proposer ou de fournir un échantillon dans LINQ to XML pour VB, ou dans un XSLT de la façon de changer un élément XML dans un autre (sans coder en dur une copie élément par élément de tous les éléments inchangés)?
Contexte:
J'ai un fichier XML, que je pense est bien formé, qui contient une entrée racine qui est <collection
> et multiples <dvd
> éléments. Dans un DVD, il y a des Genres et des Tags, comme indiqué ci-dessous. (J'ai coupé beaucoup d'autres éléments pour la simplicité).
Ce que je veux faire est de <Tag
éléments <Tag
> qui pourraient être présents dans un supplémentaire <Genre
>. Par exemple, dans l'entrée ci-dessous, je dois ajouter <Genre
> Kids </Genre
>. (Je réalise que c'est en fait l'attribut NAME de l'élément TAG que je cherche à transformer en l'élément GENRE, mais si je pouvais même imaginer comment créer un nouveau GENRE appelé "Tag", je serais beaucoup plus en avance et pourrait probablement résoudre le reste.)
Je n'ai jamais rien fait avec XML. Ma compréhension est que je pourrais utiliser un fichier de transformation XSLT et un XSLCompiledTransform ou je pourrais utiliser LINQ en XML (j'ai Visual Basic 9, et je préférerais faire tout cela à l'intérieur de VB). [Je suis sûr qu'il existe un certain nombre d'autres approches, aussi.]
Le problème est, je ne trouve pas d'exemples de syntaxe XSLT ou LINQ qui me disent comment transformer un élément en un autre. Je pourrais écrire assez de LINQ pour copier tous les éléments un par un, mais il doit y avoir un moyen plus facile que de coder en dur une copie de tous les éléments qui ne changent pas! (Il doit y avoir!)
Donc, si quelqu'un qui sait pourrait me donner un exemple ou me donner un coup de main avec un peu de code de démarrage dans LINQ ou XSLT, je serais éternellement reconnaissant (OK, peut-être pas pour toujours, mais au moins pour longtemps!).
Merci.
XML Exemple:
<Collection>
<DVD>
<ID>0000502461</ID>
<Title>Cirque du Soleil: Alegría</Title>
<Released>2002-05-31</Released>
<RunningTime>90</RunningTime>
<Genres>
<Genre>Family</Genre>
<Genre>Music</Genre>
</Genres>
<Overview>What if anything were possible? What if ...
</Overview>
<Notes/>
<Tags>
<Tag Name="Kids" FullName="Kids"/>
</Tags>
</DVD>
</Collection>
Belle explication, mais la deuxième règle de style et le résultat (pas de différence à l'entrée?!) Semblent faux – phihag
S'il vous plaît, regardez attentivement. Le résultat est différent de l'entrée. L'élément "Genres" n'est plus là et il a été remplacé par un élément "Topics". C'est exactement ce que cette question demande d'accomplir: remplacer un élément spécifique par un autre élément –
Oh, j'ai vu que l'OP voulait aussi qu'un nouveau "Genre" soit ajouté, correspondant à chaque "Tag" ... :(Fait! –