我想使用 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
我想使用 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
在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, ', ')
虽然这可能使用 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>