unmarshaling xml,具有相同元素的多个表示形式

时间:2013-08-05 07:08:00

标签: java jaxb jersey

我需要从xml(来自Redmine Web服务)解组一些数据。

问题是数据在嵌套在其他元素中时表示为属性:请参阅此处的“项目”...

<?xml version="1.0" encoding="UTF-8"?>
<issues type="array" count="1640">
  <issue>
    <id>4326</id>
    <project name="Redmine" id="1"/>
    <!-- ... ->
  </issue>
</issues>

但是,如果我尝试获取项目列表,则相同的项目数据将表示为元素:

<?xml version="1.0" encoding="UTF-8"?>
<projects type="array">
  <project>
    <id>1</id>
    <name>Redmine</name>
    <identifier>redmine</identifier>
    <created_on>Sat Sep 29 12:03:04 +0200 2007</created_on>
    <!-- ... ->
  </project>
</projects>

使用JAXB(标准,如果可能)最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

问题在于存在多个略有不同的映射。

我最后用不同的注释创建了不同的类。

编辑:另一种方式:http://blog.bdoughan.com/2011/09/mapping-objects-to-multiple-xml-schemas.html(但不是类型安全的,在标准jaxb之外,我将保留当前的实现)。

答案 1 :(得分:-2)

如果您拥有XML的架构。您可以尝试使用JAXB。 JAXB将为您提供XML的对象表示。使用访问者提取项目的每个事件。

JAXB是1.5或1.6以来任何JDK的标准。