使用单个JAXB注释类解组复杂类型

时间:2014-04-23 21:35:06

标签: java xml jaxb

我的应用程序使用了以下xml:

<PackageFiles ApplicationGUID="839E9EFD-69C2-430D-B591-B9C8E9812377">
  <Files>
    <File Name="test.jpg" />
  </Files>
</PackageFiles>


为了解开JAXB,我已经定义了以下两个类:

@XmlRootElement(name="PackageFiles")
public class PackageFiles {

    @XmlAttribute(name="ApplicationGUID")
    private String applicationGUID;

    @XmlElementWrapper(name="Files")
    @XmlElement(name="File")
    private List<File> files;
}

@XmlRootElement(name="File")
public class File {

    @XmlAttribute(name="Name")
    private String name;
}


这很好但我想知道是否有一种方法来注释PackageFiles类,以便我可以删除File类,而在Name元素中具有<File ...>属性被填充到PackageFiles类中的List<String>

1 个答案:

答案 0 :(得分:1)

如果经常出现这种复杂情况,您可以考虑使用使用xslt的Transformer以您可以轻松操作的方式执行解组。或者你可以在PackageFiles中使文件成为公共静态类,如下所示:

public static class File{
    @XmlElement
    private String name;
}

我个人更喜欢xslt方法,因为它比处于不断变化的状态的.java文件更直观,更容易维护。