如何使用XPath从一个字符串中的多个元素返回文本?

Anc*_*end 8 xpath

我想使用XPath从列表中的所有<li>元素中提取所有文本,specialList并返回一个以空格或逗号分隔的字符串.这可能吗?

可以说DOM包含以下HTML:

<ul class="specialList">
   <li>one</li>
   <li>two</li>
   <li>three</li>
   <li>four</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

期望的输出

one, two, three, four
Run Code Online (Sandbox Code Playgroud)

要么

one two three four
Run Code Online (Sandbox Code Playgroud)

Jen*_*rat 9

XPath 1.0中,只有在事先知道元素数量时才可以使用concat(...):

concat(//li[1], ', ', //li[2], ', ', //li[3], ', ', //li[4])
Run Code Online (Sandbox Code Playgroud)

如果幸运的话,您可以返回所有结果字符串,//li/text()并设置XPath处理器的输出参数,以便根据需要连接它们.这取决于处理器,因此没有通用解决方案,如果您想在XPath中进一步处理结果,则无法继续.

XPath 2.0中,您可以使用fn:string-join($sequence, $delemiter)任意长度的输入:

fn:string-join(//li, ', ')
Run Code Online (Sandbox Code Playgroud)