我有html代码,如:
<div class="main">
<p>The match is going well,
<a> john </a>
is playing awesome </p>
</div>
我的xpath函数为//div[@class="main"]/p/text()
它只返回The match is going well, is playing awesome
但我希望结果是
比赛进展顺利,约翰打得很棒
有什么建议吗?
答案 0 :(得分:3)
我建议使用normalize-space()
。这也将处理换行符,这在这种情况下很重要,并且不会被解析器删除。
normalize-space(//div[@class="main"]/p)
根据精彩评论进行修改:
输入中的所有节点都可以分解为以下XPath:
/div
/div/@class
/div/p
/div/p/text()[1]
/div/p/a
/div/p/a/text()
/div/p/text()[2]
如您所见,有2个文本节点是p
(The match is going well,
和is playing awesome
)的直接子节点。另一个文本节点(john
)是a
的子节点。
这就是原始xpath(//div[@class="main"]/p/text()
)返回您看到的结果的原因。