如何获取 XML 元素的逗号分隔字符串值? [英] How to get comma-separated string values of XML elements?

查看:51
本文介绍了如何获取 XML 元素的逗号分隔字符串值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以帮助以下要求以单个逗号分隔的字符串获取所有 XML 元素吗?

Can someone please help in the below requirement of fetching all the XML elements in a single comma separated string?

XML

<ClassNumbers>
  <class>
    10433
  </class>
  <class>
    11980
  </class>
  <class>
    13799
  </class>
  <class>
    17392
  </class>
  <class>
    11234
  </class>
</ClassNumbers>

期望的输出:

10433,11980,13799,17392,11234

欢迎任何使用 XPATH/XSLT 解决此问题的建议.

Any suggestions in solving this with XPATH / XSLT are welcome.

推荐答案

XSLT 1.0 选项...

XSLT 1.0 option...

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="text()">
    <xsl:value-of select="normalize-space()"/>
    <xsl:if test="following::text()">,</xsl:if>
  </xsl:template>

</xsl:stylesheet>

<小时>

根据评论编辑...


Edit based on comments...

XML 输入

<ListofCLassNbrs xmlns="getClassNumberData">
    <ClassNumberData>
        <ClassNumber>45</ClassNumber>
    </ClassNumberData>
    <ClassNumberData>
        <ClassNumber>46</ClassNumber>
    </ClassNumberData>
    <ClassNumberData>
        <ClassNumber>47</ClassNumber>
    </ClassNumberData>
</ListofCLassNbrs>

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/*">
    <ClassNumberData>
      <xsl:apply-templates/>
    </ClassNumberData>
  </xsl:template>

  <xsl:template match="text()">
    <xsl:value-of select="normalize-space()"/>
    <xsl:if test="following::text()">,</xsl:if>
  </xsl:template>

</xsl:stylesheet>

XML 输出

<ClassNumberData>45,46,47</ClassNumberData>

如果由于某种原因需要专门匹配ClassNumber,则可以将命名空间绑定到前缀...

If for some reason you need to specifically match ClassNumber, you can bind the namespace to a prefix...

<xsl:stylesheet version="1.0" 
  xmlns:x="getClassNumberData"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  exclude-result-prefixes="x">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/*">
    <ClassNumberData>
      <xsl:apply-templates/>
    </ClassNumberData>
  </xsl:template>

  <xsl:template match="x:ClassNumber">
    <xsl:value-of select="normalize-space()"/>
    <xsl:if test="following::text()">,</xsl:if>
  </xsl:template>

</xsl:stylesheet>

这篇关于如何获取 XML 元素的逗号分隔字符串值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆