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

时间:2013-06-28 20:22:11

标签: xpath

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

让我们说DOM包含以下HTML:

<ul class="specialList">
   <li>one</li>
   <li>two</li>
   <li>three</li>
   <li>four</li>
</ul>

期望输出

one, two, three, four

OR

one two three four

2 个答案:

答案 0 :(得分:9)

XPath 1.0 中,只有在使用concat(...)提前了解元素数量时才可以使用此选项:

concat(//li[1], ', ', //li[2], ', ', //li[3], ', ', //li[4])

如果你很幸运,你可以返回//li/text()的所有结果字符串,并设置XPath处理器的输出参数,以便按需要连接它们。这取决于处理器,所以没有通用的解决方案,如果你想在XPath中进一步处理结果,这是没办法的。

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

fn:string-join(//li, ', ')

答案 1 :(得分:1)

虽然这可能使用XSLT 1.0

<xsl:for-each select="ul/li">
   <xsl:value-of select="."/>
   <xsl:if test="position() != last()">
       <xsl:text>,</xsl:text>
   </xsl:if>
</xsl:for-each>