【问题标题】:What is the difference between //*[*] and //*[.] in XPath?XPath 中的 //*[*] 和 //*[.] 有什么区别?
【发布时间】:2019-02-02 23:18:31
【问题描述】:

我正在尝试理解

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

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

我也可以使用 dot 代替属性

 //tag[@Attribute="value"] 

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

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

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

//tag[@id="value"] 

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

【问题讨论】:

    标签: xml xpath


    【解决方案1】:

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

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

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

    //tag[.="value"] 将选择string value 等于value 的所有tag 元素。例如,对于这个 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

    【讨论】:

      猜你喜欢
      • 2016-06-07
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多