2017-03-17 112 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