xpath里如何定义包含一个class

如果html结构是这样

<div class="demo"></div>

那么我知道可以写xpath //div[@class="demo"]
但是如果我的html是

<div class="test demo"></div>
<div class="demo test"></div>
<div class="test demo2"></div>

我只想选出有demo这个class的对象,那应该怎么弄

阅读 18.8k
3 个回答
//div[contains(@class, 'demo')]

先看看维基百科,可以了解个大概。http://zh.wikipedia.org/wiki/XPath

字符串函式

  • string(object?)
    根据内建法则转换任何四种XPath数据型别为字符串。参数可为XPath,此时符合条件的节点(群)被转换成字符串返回。

  • concat(string, string, string*)
    链接任何数量的字符串。

  • contains(s1, s2)
    如果s1包含s2返回真。

  • normalize-space(string?)
    所有在字符串头和尾的空白字符都被移除,或者将字符间两个及以上的空白字符置换成单一空格。有些XML因打印关系被美化,但可能让后来的字符串处理结果不可靠,故使用此函式有时能很好地改善情况。

函数与运算符

布尔运算符and、or以及not()函数

W3

深入了解,可以看W3规范。

如果没记错的话可以这么来:

//div[contains(@class, 'demo')]

如果是多个则可以:

//div[contains(@class, 'demo') and contains(@class, 'other')]

如果目标 class 不一定是第一个,那么:

//div[contains(concat(' ', @class, ' '), 'demo')]

顺便一提,用 Jetbrains 家的 IDE,里面有内置的 xpath 规则生成器。

仅看题目里的例子的话。似乎你需要的是CSS selector 比如 $("div.demo"),而不是xpath。
可以说明一下使用场合么?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏