【问题标题】:converting multiple tags in xml to attributes of a single tag将xml中的多个标签转换为单个标签的属性
【发布时间】:2010-03-03 15:47:12
【问题描述】:

我有一个 XML 文件,格式如下:

<row>
  <field name="id">18</field>
  <field name="lat">40.7560540000</field>
  <field name="lng">-73.9869510000</field>
  <field name="body">Students arriving from Haiti say they’re having a hard time getting placed in city schools.</field>
</row>

我希望将这多个标签组合起来,得到这种形式的XML(将多个标签组合成单个标签的属性):

<row id="18" lat="40.7560540000" lng="-73.9869510000" body="Students arriving from Haiti say they’re having a hard time getting placed in city schools.">
</row>

可以这样做吗?如果是的话,有人可以建议我如何进行这样的转变吗?提前致谢。

【问题讨论】:

    标签: xml


    【解决方案1】:

    是的,这样的改变是可能的。一种简单的方法(取决于您如何看待它)是对其应用 XML 转换:

    <xsl:stylesheet 
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    >
      <!-- the document element gets copied -->
      <xsl:template match="/*">
        <xsl:copy>
          <!-- transform any child <row> elements -->
          <xsl:apply-templates select="row" />
        </xsl:copy>
      </xsl:template>
    
      <!-- <row> elements get copied, too -->
      <xsl:template match="row">
        <xsl:copy>
          <!-- transform any child <field> elements -->
          <xsl:apply-templates select="field" />
        </xsl:copy>
      </xsl:template>
    
      <!-- <field> elements become attributes -->
      <xsl:template match="field">
        <xsl:attribute name="{@name}">
          <!-- the value of the <field> becomes the attribute value -->
          <xsl:value-of select="." />
        </xsl:attribute>
      </xsl:template>
    </xsl:stylesheet>
    

    适用于:

    <rows>
      <row>
        <field name="id">18</field>
        <field name="lat">40.7560540000</field>
        <field name="lng">-73.9869510000</field>
        <field name="body">Students arriving from Haiti say they’re having a hard time getting placed in city schools.</field>
      </row>
    </rows>
    

    你得到:

    <rows>
      <row id="18" lat="40.7560540000" lng="-73.9869510000" body="Students arriving from Haiti say they’re having a hard time getting placed in city schools."></row>
    </rows>
    

    【讨论】:

    • 谢谢托马拉克。我曾使用 mysql 数据库来存储记录。我刚刚使用以下命令将表转换为 xml 格式: mysqldump --xml -u root -p [database-name] [tablename] > file.xml 现在我有一个纯 xml 文件,它只包含记录。这个 xslt 在哪里出现?我在这个 xslt 相关的事情上很穷。请指导我。
    • 有很多 XSLT 处理器可用。独立的命令行工具以及编程语言集成的工具。选择(“Google for”)在您的环境中工作或适​​合您的处理链的处理器,阅读一下它的工作原理并将 XML 文件和 XSL 样式表提供给它。
    • @mamatha:您也可以等待,看看是否有其他建议更适合您的需求。同时,您可以告诉(最好通过编辑问题)您已经使用了哪些工具,以及您为此准备/能够使用的编程语言。
    猜你喜欢
    • 2011-04-14
    • 2010-09-13
    • 2015-01-24
    • 2012-09-10
    • 2021-09-27
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多