短版:LINQ或XSLT把一个元素到另一个在Visual Basic 9
任何人都可以建议或LINQ to XML中的VB提供的样品,或在如何一个XML元素来改变成另一种的XSLT (没有硬编码所有未改变的元素的逐元素拷贝)?
背景:
我有一个XML文件,我认为适当地形成,包含根条目是<collection
>和多个<dvd
>元素。在DVD中,有流派和标签,如下所示。 (为了简单起见,我剪掉了很多其他元素)。
我想要做的就是将任何可能存在的元素转换为另一个<Genre
>。例如,在下面的条目,我需要添加<Genre
>儿童</Genre
>。 (我知道这实际上是我期待变成体裁元素的标记元素的name属性,但如果我甚至可以弄清楚如何创建一个名为新流派“标签”,我会提前更远并且也许可以解出休息。)
我从来没有做过任何与很多XML。我的理解是,我可以使用XSLT转换文件和XSLCompiledTransform或者我可以使用LINQ到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>
不错的解释,但第二个样式表规则和结果(没有区别输入?!)似乎是错误 – phihag 2008-11-27 00:35:09