如果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的对象,那应该怎么弄
如果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的对象,那应该怎么弄
如果没记错的话可以这么来:
//div[contains(@class, 'demo')]
如果是多个则可以:
//div[contains(@class, 'demo') and contains(@class, 'other')]
如果目标 class 不一定是第一个,那么:
//div[contains(concat(' ', @class, ' '), 'demo')]
顺便一提,用 Jetbrains 家的 IDE,里面有内置的 xpath 规则生成器。
先看看维基百科,可以了解个大概。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规范。