我有一个带有a和b元素对的xml。并且想遍历它们并做一些工作,但是找不到最简单的方法。我正在使用C#,并希望使用.Net提出建议。我已经尝试过XmlDocument,XPathNavigator和XmlReader,但是卡住了。
我想首先找到“ a”,然后找到“ b”,然后进行处理。然后我想找到下一个“ a”,依此类推。
我想我想要在root之下的级别上使用类似NextSibling之类的东西,但是当我处理a或b以下的元素时,我就迷失了指针/导航器。
<root>
<a>
<child 1 />
</a>
<b>
<child 2/>
</b>
<a>
<child 1 />
</a>
<b>
<child 2/>
</b>
.......
</root>
亲切问候 马丁
答案 0 :(得分:0)
在处理每个元素a时,您可以测试后面的第一个同级元素是否是元素b。
<xsl:template match="/root/a">
...
<xsl:for-each select="following-sibling::*[1][self::b]">
...
</xsl:for-each>
</xsl:template>
答案 1 :(得分:0)
如果您使用的是最新版本的XPath(3.0或3.1),则可以通过for-each-pair()
函数进行此操作:
let $process := function($a, $b) { (: do something :) }
return for-each-pair(//a, //a/following-sibling::*[1][self::b], $process)
答案 2 :(得分:0)
我最终想到了另一种方法,将所有“ b”循环,然后查找最后的“ a”以获取所需的信息
选择所有“ b”
//b
,然后选择当前“ b”之前的最后一个“ a”以获取所需的值。
(preceding-sibling::a)[last()]
感谢所有灵感!