Jaxb - 自定义HashMap映射

时间:2016-10-13 09:56:20

标签: java xml jaxb

<mapdata>
  <media1>
    <name>media1</name>
    <items>
      <key>1</key>
      <width>100</width>
      <height>150</height>
    </items>
    <items>
      <key>2</key>
      <width>100</width>
      <height>150</height>
    </items>
  </media1>
  <media2>
    <name>media2</name>
    <items>
      <key>1</key>
      <width>100</width>
      <height>150</height>
    </items>
  </media2>
</mapdata>

我想使用JaxB将上面的xml转换为下面的hashMap对象。请帮帮我。

public class MapData{
    protected Map<String, Media> mapdata;

}

public class Media {

    private String name;

    private List<MediaDetail> items = new ArrayList<>();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<MediaDetail> getItems() {
        return items;
    }

    public void setItems(List<MediaDetail> items) {
        this.items = items;
    }
}

媒体像media1,media2,media3等一样成长。由于媒体标签的标签不可预测。我无法检测到使用标签名称。我需要将媒体标记映射为关键字,并将细节维护为涉及名称和项目列表的值对象。请让我知道是否有可能实现。

2 个答案:

答案 0 :(得分:0)

通过x here等在线资源为您创建xsd。

现在您可以使用this生成pojo。 Jaxb自己生成pojos,之后你可以按照你想要的方式创建类,然后设置你想要的字段。如果你正在使用maven,还有其他方法可用于创建pojo而不是使用终端。

答案 1 :(得分:0)

这样做并不容易。您可能会使用某些MapAdapter或其他类型的适配器。

您需要对.java课程进行更改。加上一些注释。

即使您需要稍微更改xml

我仍然认为您可以在this文章中找到所需的一切。

祝你好运。

相关问题