首页 > 解决方案 > XPath 中的 //*[*] 和 //*[.] 有什么区别?

问题描述

我试图了解两者之间的区别

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

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

还有我可以使用而不是属性的地方

 //tag[@Attribute="value"] 

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

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

最后一个只在文本的情况下有效,但不能代替大小写

//tag[@id="value"] 

例如,那么我什么时候可以更改点而不是属性?

标签: xmlxpath

解决方案


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

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

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

//tag[.="value"]将选择字符串值等于tag的所有元素。例如,对于这个 XML,value

<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>

另请参阅在 XPath 中测试 text() 节点与字符串值


推荐阅读