【问题标题】:Xpath / Find all attributes which start with specific patternXpath / 查找以特定模式开头的所有属性
【发布时间】:2014-02-06 07:59:25
【问题描述】:

我想找到所有属性x开头的元素。

例如,

<a xt="1"> text1 </a>
<a xu="2"> text2 </a>
<a text1="3"> text3 </a>

xpath 会找到前两个元素,因为它包含名称分别为xtxu 的属性。 text1 属性不是以x 开头的,因此我不会得到它。

我尝试使用 start-with() 函数,但据我了解,它找到的是值,而不是属性。

【问题讨论】:

  • 是 Xpath 1.0 还是 2.0?在 2.0 中,您可以使用正则表达式。
  • 我用的是WebDriver,通过xpath找到。

标签: xpath


【解决方案1】:

试试

@*[starts-with(name(), 'x')]

【讨论】:

    【解决方案2】:

    我会使用:

    //*[@*[starts-with(local-name(),'x')]]
    

    与另一个答案类似,但使用 local-name() 代替。这只会检查属性名称而不是命名空间前缀。

    例如,如果您使用local-name(),以下也将被匹配,因为前缀以x开头...

    <a xns:text1="3" xmlns:xns="xns"> text3 </a>
    

    如果使用local-name(),则不会匹配,因为xns:text1的本地名称是text1

    【讨论】:

    • 我同意,但 OP 没有提到任何命名空间。
    • @JoelM.Lamsen - OP 没有提到命名空间,但是对于这个基本的问题,我怀疑 OP 是否意识到了差异。我只是指出了不同之处,因此在现实世界的使用中没有任何混淆。
    • 是的,正如我所说,我同意。
    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 2016-01-04
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2011-02-22
    • 2012-12-23
    相关资源
    最近更新 更多