根据XPath拆分XML级别

时间:2010-03-02 15:01:17

标签: xml xpath

我可以将带有XPath表达式的XML文档级别拆分到列表中吗?我有这个,例如:

<root>
  <test1 />
  <testX />
  <test2 />
  <test21 />
  <testX />
  <test3 />
</root>

因此,在此处运行会返回包含<test1 /><test2 /><test21 /><test3 />的列表。

<testX />之间不一定只有一个节点,可以有不同的数字。

2 个答案:

答案 0 :(得分:2)

查找root下的第一个元素,以及每个“testX”元素后面的第一个元素。除了那些名为“testX”的元素。

(/root/*[1] | /root/*['testX' = name(preceding-sibling::*[1]))[name() != 'testX']

XPath上的一些MSDN链接:

答案 1 :(得分:0)

/root/*[not(self::testX)]

会选择

<test1 />
<test2 />
<test21 />
<test3 />