这可能非常简单,但我遗漏了一些东西......我有一个XElement,我需要在其中找到一个特定元素的组并为该组插入一个新的父元素。
即,在下面的示例中,我需要创建一个新元素并将其作为z元素组的父元素添加到树中 -
<x>
<z />
<z />
<z />
</x>
变为:
<x>
<y>
<z />
<z />
<z />
</y>
</x>
Z元素之间不会有任何其他元素,但xml中可能存在连续元素的多个实例。
如果可能的话,我宁愿避免使用XSLT来操纵数据。
有什么建议吗?
答案 0 :(得分:1)
XPath只能访问现有文档,不能创建新文档。
您可以用来创建新文档的技术包括XSLT,XQuery,Linq等。
如果不知道为什么不想使用XSLT,很难回答这个问题,对于我们中的许多人来说,这是最明显和最简单的方法。
答案 1 :(得分:0)
您仍然需要使用某些东西(DOM / XSLT / etc)来修改文档或输出新文档。
话虽如此,您可以通过定位组的第一个<z/>
元素(从而遍历组)然后将其包装在组内的其他元素来解决问题。
//z[not(preceding-sibling::z)]
将为您提供所有<z/>
个没有前兄弟<z/>
的元素,因此您拥有第一个组(并且返回的元素数是数字小组)。
使用<y>
元素中的DOM / other包裹该元素。
包装组中的其他元素。在第一个<z/>
元素上使用following-sibling::z
来获取组中的元素2到N.