2017-04-23 87 views
-1

某些元素我有遵循XML如何抓住所有子孫元素,但直到使用XPath

<element id="1"> 
    <choice> 
     <sequence> 
      <element id="11"> 
       <group> 
        <element id="111"> 
         <!-- ... --> 
        </element> 
       </group> 
      </element> 
      <element id="12"> 
       <element id="121"> 
        <!-- ... --> 
       </element> 
      </element> 
     </sequence> 
    </choice> 
</element> 
當前 <element>和兒童 <element>節點之間

可能是<choice><sequence><group>節點的任意組合。或者他們可能不是。如何抓取當前<element>中的所有立即後代<element>節點,但是沒有<element>作爲其後代的節點。

<element>節點的背景之一,我想寫類似: ./(choice|sequence|group)*/element

,但它不工作:(

回答

1

我想你只能通過再次使用它選擇了「根」元素的XPath的解決這個問題。例如,如果通過XP用戶選擇它ath //element[@id="1"]然後

.//element[ancestor::element[1] = //element[@id="1"]] 

選擇你想要的。它會找到element它有它和「根」

你可以有測試之間沒有其他element - https://eval.in/781145集ID = 1,ID = 12 ....

1

我不知道我理解正確的問題...嘗試以下XPath表達,讓我知道,如果這不是你想要的。

./*[self::choice or self::sequence or self::group]/element 
+0

看來它的工作原理。但我的例子太簡單了。我檢查了真實的數據,它不起作用。現在我將以我的真實數據爲例。 – vihtor

+0

在你的表達的幫助下,我明白了,但是需要做的事情不僅是''節點,還有''。 '... /元素|屬性'不起作用 – vihtor

+0

'.../* [self :: element或self :: attribute]'不起作用 – vihtor

相關問題