JAVA中的XML解析,从一个Schema转换到另一个Schema

时间:2012-03-28 10:00:40

标签: xml xsd xml-parsing xslt

如何在java中解析XML。 我在下面给出了一个XML:

<?xml version="1.0" ?>
<metabase>
  <response status="SUCCESS"/>
  <item>
    <id>10147417040</id>
    <description>
      <title>What part of the constitiution states the goals?</title>
      <language>English</language>
   </description>
   <pubDate>2012-03-27 07:25:33.0</pubDate>
  </item>
  <item>
    <id>10147417018</id>
    <description>
      <title>What is the work envelope of a robot car?</title>
      <language>English</language>
    </description>
    <pubDate>2012-03-27 07:25:33.0</pubDate>
  </item>
</metabase>

我想解析这个XML并转换为以下形式:

<?xml version="1.0" ?>
<add>
  <doc>
    <field name="id">10147417040</field>
    <field name="title">What part of the constitiution states the goals?</field>
    <field name="language">English</field>
    <field name="pubDate">2012-03-27 07:25:33.0</field>
  </doc>
  <doc>
    <field name="id">10147417018</field>
    <field name="title">What is the work envelope of a robot car?</field>
    <field name="language">English</field>
    <field name="pubDate">2012-03-27 07:25:33.0</field>
  </doc>
</add>

请提供一些示例JAVA代码来执行此任务。

由于 Shariq

1 个答案:

答案 0 :(得分:1)

执行此类XML到XML转换的最佳方法是使用XSLT。以下是满足您需求的XSLT:

<xsl:stylesheet 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="text()">
  </xsl:template>

  <xsl:template match="item">
    <doc>
      <field name="id">
        <xsl:value-of select="id" />
      </field>
      <field name="title">
        <xsl:value-of select="description/title" />
      </field>
      <field name="language">
        <xsl:value-of select="description/language" />
      </field>
      <field name="pubDate">
        <xsl:value-of select="pubDate" />
      </field>
    </doc>
  </xsl:template>

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

</xsl:stylesheet>

我不熟悉Java,但我确信这是一种加载XSLT并将其应用于XML的简单方法 - 例如参见http://www.devx.com/getHelpOn/10MinuteSolution/16635/1954