9

我想使用 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

或者

one two three four
4

2 回答 2

10

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, ', ')
于 2013-06-28T20:56:34.637 回答
2

虽然这可能使用 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>
于 2017-08-03T19:11:04.920 回答