2010-03-02 52 views
1

我可以将具有XPath表达式的XML文档级别拆分为列表吗?我有这样的,例如:根据XPath拆分XML级别

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

因此,在这个运行它返回与<test1 /><test2 /><test21 /><test3 />列表。

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

回答

2

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

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

XPath的某些MSDN链接:

+0

它不一定是每个第二个节点。 textX元素之间可以有非常多的元素 – 2010-03-02 15:09:42

+0

我已经阐述了我最初的问题 – 2010-03-02 15:19:12

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

会选择

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