4
<?xml version="1.0" encoding="UTF-8"?> 
<Envelope> 
   <Body> 
      <RetrieveChangeKeysListResponse message="Success"> 
         <keys> 
            <ChangeID type="String">C10286</ChangeID> 
         </keys> 
         <keys> 
            <ChangeID type="String">C10296</ChangeID>
         </keys> 
      </RetrieveChangeKeysListResponse> 
   </Body> 
</Envelope>

从上面的 xml 文件中,下面的 xpath 查询的输出给出了不带分隔符的值。

询问:

/Envelope/Body/RetrieveChangeKeysListResponse/keys/ChangeID/text()

输出: C10286C10296

如何在值之间使用分隔符获取输出。

示例: ( C10286,C10296)

在这方面需要你的帮助。

谢谢并恭祝安康

里亚斯·侯赛因

4

2 回答 2

3

看起来您有两个ChangeID节点,如果您调用XPATH

/Envelope/Body/RetrieveChangeKeysListResponse/keys/ChangeID/text()

然后它将通过连接在一起输出所有值。

所以调用XPATH

/Envelope/Body/RetrieveChangeKeysListResponse/keys/ChangeID

然后concat()text()你喜欢的值。

更新:

使用 XSLT 1.0,您可以这样做:-

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:apply-templates select="/Envelope/Body/RetrieveChangeKeysListResponse/keys/ChangeID"/>
    </xsl:template>
    <xsl:template match="ChangeID">
        <xsl:if test="position()='1'">
            <xsl:value-of select="'('"/>
        </xsl:if>
        <xsl:choose>
            <xsl:when test="position()=last()">
                <xsl:value-of select="text()"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="concat(text(),',')"/>
            </xsl:otherwise>
        </xsl:choose>
        <xsl:if test="position()=last()">
            <xsl:value-of select="')'"/>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

输出:

(C10286,C10296)

于 2013-02-20T14:32:54.397 回答
0

解决方案:

string-join((/Envelope/Body/RetrieveChangeKeysListResponse/keys/ChangeID),',')

输出:

字符串='C10286,C10296'

于 2019-09-04T10:12:38.610 回答