xpath - join / concat子节点兄弟节点文本

时间:2015-09-21 13:32:15

标签: google-chrome join xpath

我搜索了SO并找到了引用Accepted Answer,但它没有解决我的问题。我有一个简单的html dom:

<div class="name-hg">
    <h2 class="head-name"><a href="http://www.example.com/example.html" title="Example title">Times have changed</a></h2>
    <div class="sub-name">10 Things you did not know about time</div>
</div>
<div class="name-hg">
    <h2 class="head-name"><a href="http://www.example.com/example.html" title="Example title">A Guide to mental fitness</a></h2>
    <div class="sub-name">I am fit... mentally that is.</div>
</div>
<div class="name-hg">
    <h2 class="head-name"><a href="http://www.example.com/example.html" title="Example title">Sllippers &amp; Boots</a></h2>
    <div class="sub-name">Fashion for the eccentric</div>
</div>
<div class="name-hg">
    <h2 class="head-name"><a href="http://www.example.com/example.html" title="Example title">Bic Pen Era</a></h2>
    <div class="sub-name">Your childhood could not have been better</div>
</div>

我正在尝试使用xPath来获取所有(连接字符串)“head-name”和“sub-name”类的内容。我的xPath表达式没有成功:

$x("string-join((//div[@class='name-hg']/h2[@class='head-name']/a/text(), //div[@class='name-hg']/div[@class='sub-name']/text()),' ')")

我在Chrome控制台中尝试时收到的错误消息是:

Uncaught DOMException: Failed to execute 'evaluate' on 'Document': The string 'string-join((//div[@class='name-hg']/h2[@class='head-name']/a/text(), //div[@class='name-hg']/div[@class='sub-name']/text()),' ')' is not a valid XPath expression.(…)

如果有另一个我可以使用的表达式(比如跟随兄弟),那就太好了。

非常感谢

1 个答案:

答案 0 :(得分:0)

这是XPath 2.0中的答案(string-join()是XPath 2.0函数)

normalize-space(string-join(//div[@class='name-hg']//text(), ' '))

不可能通过纯XPath 1.0进行字符串加入 - 你只需列出所有节点而不加入(然后通过外部代码迭代和加入,例如JavaScript),可能它适用于你。

//div[@class='name-hg']//text()