如何在xpath

时间:2019-02-25 10:09:33

标签: xpath

我有一个值为“ This is_a_test”的listBox (“此”之后有一个空格)

$x('//li[contains(@class,"myClass")][text()="This is_a_test"]')

当我运行它时,我得到了一个空列表[]

我也尝试过

$x('//li[contains(@class,"myClass")][text()="This<b></b> <b></bis_a_test"]')

我需要更改表情吗?

XML

<li .... >
"This"
<b></b>
<b></b>
"is_a_test"
</li>

1 个答案:

答案 0 :(得分:1)

浏览器“显示”一个空格,但是在命令行中您会得到

xmllint --html --xpath "//li[contains(@class,'myclass')]/text()" test.html
"This"


"is_a_test"

因此,结果上有3条新行,它们也是text()输出的一部分。

此XPath可以从html中删除新行(为了简单起见,将引号取反)

echo '<li class="myclass">"This"<b></b> <b></b>"is_a_test"</li>' | \
xmllint --html --xpath "//li[contains(@class,'myclass')][.='\"This\" \"is_a_test\"']/text()" -

结果:

"This" "is_a_test"

请注意点.而不是text()
在xpath表达式上表示换行并不容易。另外,您可能要检查this answer for more info on the difference between dot and text()