1

在 JAXB 中,如果未提供注释,则元素名称将派生自属性名称而不是字段,但是在这种情况下属性呢?将属性写回 XML 文件是否有任何默认行为?

4

1 回答 1

1

1) 如果未提供注释:
每个公共 getter/setter 对和每个公共字段都将自动绑定到 XML,除非由 {@link XmlTransient} 注释
例如

public class Cat 
{
    public String name = "tomcat";

    private String nick = "catalina";

    public int getAge() { return 5; }

    public void setAge(int age) {}
}   

JAXB.marshal(cat, System.out);  

输出是

<cat>
    <name>tomcat</name>
    <age>5</age>
</cat>

2) XML 属性呢?XML 属性被命名为字段或 getter/setter 对并放置在根节点
中,例如

@XmlAccessorType(XmlAccessType.FIELD)
public class Cat 
{
    String name = "tomcat";

    @XmlAttribute
    String nick = "catalina";

    @XmlAttribute
    String home = "java.home";

    int age = 5;
}  

输出是

<cat home="java.home" nick="catalina">
    <name>tomcat</name>
    <age>5</age>
</cat>
于 2012-08-19T19:27:27.727 回答