是什么XPath中之间// * [*]和// *的差异[。]

问题描述 投票:3回答:1

我想了解的区别

//*[.] and //*[*] 

这些返回不同数量的元素。

此外,我可以使用点,而不是属性

 //tag[@Attribute="value"] 

不只是在文本的情况下?又是什么语法是什么样子?因为我试过

//tag[@.="value"] and //tag[.="value"] 

最后一个只在文本的情况下工作,但不能代替的情况下,

//tag[@id="value"] 

例如,所以,当我可以改变的点,而不是属性?

xml xpath
1个回答
3
投票

//*[.]将选择的所有元素。它相当于//*

//*[*]将选择至少有一个子元素的所有元素。

//tag[@.="value"]在语法上是无效的。

//tag[.="value"]将选择所有tag元素,其string value等于value。例如,对于这个XML,

<tag id="r">
  <tag id="a">value</tag>
  <tag id="b">val<br/>ue</tag>
  <tag id="c"><span>val</span><span>ue</span></tag>
  <tag id="f"> value</tag>
  <tag id="g">Value</tag>
</tag>

//tag[.="value"]将选择

<tag id="a">value</tag>
<tag id="b">val<br/>ue</tag>
<tag id="c"><span>val</span><span>ue</span></tag>

参见Testing text() nodes vs string values in XPath

© www.soinside.com 2019 - 2024. All rights reserved.