【问题标题】:How to match two CSS class attribute values via XPath?如何通过 XPath 匹配两个 CSS 类属性值?
【发布时间】:2016-05-24 23:05:27
【问题描述】:

我查看了有关如何选择具有多个类的元素的问题的答案。解决方案之一是:

//div[contains(@class, 'class1') and contains(@class, 'class2')]

但如果div 元素的类字符串包含class1 或class2,这将中断。是否有选择具有多个类的标签的官方方法?这条路会断吗?

【问题讨论】:

    标签: html css xml xpath


    【解决方案1】:

    是的,您的 XPath 可能匹配不想要的 @class 值是正确的:

    //div[contains(@class, 'class1') and contains(@class, 'class2')]
    

    但是如果一个标签的类字符串包含 1 类或 2 类

    例如,上面的 XPath 将匹配 div 元素与以下任何 @class 属性值:

    class="class10 class20"
    class="notclass1 notclass2"
    class="class1class2"
    

    通常的保护措施是在@class 以及目标字符串之前添加和附加空格:

    //div[    contains(concat(' ', @class, ' '), ' class1 ')
          and contains(concat(' ', @class, ' '), ' class2 ')]
    

    这种改进后的 XPath 不会匹配上面提到的这种不受欢迎的变化。

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2013-04-21
      相关资源
      最近更新 更多