2011-05-01 142 views
2

如何将JAXB注释中的字段映射到元素和属性?我在尝试在JAXB中定制我的模型时遇到了一些麻烦。这里是我当前的模型:如何通过JAXB注释映射XML元素和属性?

Info.java

package com.rest.model; 

public class Info { 

    private String a; 

    private String b; 

    private String c; 

    private String d; 

    public Info() { 

    } 

    /* ... insert JavaBean getters/setters here */ 
} 

InfoList.java

package com.rest.model; 

public class InfoList { 

    private List<Info> infos; 

    public InfoList() { 

    } 

    /* ... insert JavaBean getters/setters here */ 
} 

什么这个被序列化到如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<infos> 
    <info> 
     <a>HELLO</a> 
     <b>WORLD</b> 
     <c>OLLEH</c> 
     <d>DLROW</d> 
    </info> 
</streams> 

我该如何控制这是序列化的方式?我尝试过使用注释,但我只能设法触发IllegalAnnotationException。我将如何使用这个模型,因为它会自动映射并在注释中表示它?或者,如何将Info类中的字段更改为映射到XML属性?

回答

2

默认情况下,JAXB将查找公共访问器上的注释。如果您注释了字段,您将看到您遇到的异常情况。如果你想注释字段 添加以下内容:

@XmlAccessorType(XmlAccessType.FIELD) 
public class Foo { 

    @XmlAttribute 
    private String a; 

} 

举个例子看看:

相关问题