2017-03-17 147 views
-1

假設我有這樣的個XML內匹配的所有子節點的內容,XPATH的父元素

<a><b>text</b></a> 

<a>text</a> 

我怎樣寫一個通用的XPath內匹配的所有內容元素<a>不考慮子節點(<b>)而不是寫/a/b/a,因爲我可以爲元素<a>有任何子節點。

+0

你意味着什麼

爲了演示,請考慮下面的示例XML像這樣// //一個// text()'?這應該匹配'xml'樣本中的'text' – Andersson

+0

我嘗試過// a // text()...我沒有得到所需的輸出..它似乎沒有考慮子節點內的內容。 –

回答

0

要得到的結果等於/a關於你的第二個XML樣本您的第一個XML樣本等於/a/b,您可以使用下面的表達式:

//a/descendant-or-self::*[not(*)] 

aa中的XPath返回後裔本身取其數值爲葉片元件即無子元件。當上面的XPath是執行的結果將是

<root> 
    <a><b>text b</b></a> 
    <a>text a</a> 
    <a><c>text c</c></a> 
    <a><c><d>text d</d></c></a> 
</root> 

<b>text b</b> 
<a>text a</a> 
<c>text c</c> 
<d>text d</d> 

demo