2010-03-02 78 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 />