我需要XPath代码来获取子元素(一个或多个)并将它们放在一行中,用逗号分隔。
所以,如果我有以下XML:
<Authors>
<Author>Bob Smith</Author>
<Author>Mary Jones</Author>
<Author>Sam Doe</Author>
</Authors>
我想要以下输出:
Bob Smith,Mary Jones,Sam Doe
它需要足够聪明才能留下最后一位作者的逗号。可能只有一位作者。
非常感谢
答案 0 :(得分:1)
XPath不是转换工具,因此您无法单独使用它来执行您想要的操作。您可能会想到XSL,它使用XPath并且能够转换数据。
可以从XML示例中提取数据的XPath表达式将是
/Authors/Author
然后,无论您使用什么来执行文档上的XPath表达式(无论是XSL还是某些XML库),您都可以遍历结果并创建所需的输出。
在XSL中你可以按照这些方式做点什么:
<xsl:for-each select="/Authors/Author">
<xsl:if test="position() != 1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:value-of select="text()"/>
</xsl:for-each>
其他语言会更直接,可能使用语言的join
函数(如果有的话)。