Синтаксический анализ XML в JAVA, преобразование из одной схемы в другую. - PullRequest
0 голосов
/ 28 марта 2012

Как разобрать XML в Java. У меня есть один 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 Ответ

1 голос
/ 01 апреля 2012

Лучший способ сделать этот вид преобразований 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

...