从键值列表到属性键=值

时间:2011-11-13 17:15:04

标签: java jaxb

我对JAXB有疑问。基本上我所拥有的是这两个类:

Element {
  String name
  List<Attribute> attributes;
}

Attribute {
  String key
  String value
}

当然使用getter和setter,以及使用JAXB XmlRootElement。

由此生成的XML是:

<element>
    <attributes>
        <key>id</key>
        <value>1</value>
    </attributes>
    <name>My Element</name>
</element>

但我正在寻找的是更像这样的东西:

<element id="1">
    <name>My Element</name>
</element>

也就是说,对于Attribute的每个实例,我想要key = value(作为属性)

这在JAXB中是否可行?

此致 的Morten

1 个答案:

答案 0 :(得分:1)

我认为它不适用于List。但是有另一种选择使用

  • 地图和
  • @XmlAnyAttribute

你的例子:

  @XmlRootElement
  public static class Element
  {
    @XmlElement
    String             name;

    @XmlAnyAttribute
    Map<QName, Object> map;
  }

  {
    //
    Element element = new Element();
    element.name = "a wonderful name";
    element.map = new HashMap<QName, Object>();
    element.map.put( new QName( "id" ), "1" );
    element.map.put( new QName( "other" ), "2" );
  }

结果:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<element id="1" other="2">
    <name>a wonderful name</name>
</element>

祝你好运!