首页 文章

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

提问于
浏览
7

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

2 回答

  • 0

    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, ', ')
    
  • 9

    虽然这可能使用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>
    

相关问题