精简版:
任何人都可以在 LINQ to XML for VB 或 XSLT 中建议或提供一个示例,说明如何将一个 XML 元素更改为另一个(无需硬编码所有未更改元素的逐个元素副本)?
背景:
我有一个我认为格式正确的 XML 文件,其中包含一个根条目<collection
> 和多个<dvd
> 元素。在 DVD 中,有流派和标签,如下所示。(为简单起见,我删去了很多其他元素)。
我想要做的是将任何<Tag
可能存在的 > 元素变成一个额外的<Genre
>。例如,在下面的条目中,我需要添加<Genre
>Kids </Genre
>。(我意识到它实际上是 TAG 元素的 NAME 属性,我希望将其转换为 GENRE 元素,但如果我什至可以弄清楚如何创建一个名为“Tag”的新 GENRE,我会走得更远并且可能会解开其余的问题。)
我从来没有对 XML 做过很多事情。我的理解是,我可以使用 XSLT 转换文件和 XSLCompiledTransform,或者我可以使用 LINQ to XML(我有 Visual Basic 9,并且更愿意在 VB 中完成这一切)。[我相信还有许多其他方法。]
麻烦的是,我找不到任何 XSLT 或 LINQ 语法示例来告诉我如何将一个元素转换为另一个元素。我可以写出足够多的 LINQ 来一个一个地复制所有元素,但是必须有一种比硬编码所有不变元素的副本更简单的方法!(必须有!)
因此,如果知道的人可以为我提供一个示例或帮助我了解一些 LINQ 或 XSLT 中的入门代码,我将永远感激不尽(好吧,也许不是永远,但至少在很长一段时间内!)。
谢谢。
示例 XML:
<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>