1

JAXBでは、アノテーションが提供されていない場合、要素名はフィールドではなくプロパティ名から派生しますが、この場合の属性はどうでしょうか。XMLファイルに属性を書き戻すためのデフォルトの動作はありますか?

4

1 に答える 1

1

1)アノテーションが提供されなかった場合:
{@ link XmlTransient}によるアノテーションが付けられていない限り、すべてのパブリックゲッター/セッターペアとすべてのパブリックフィールドは自動的にXMLにバインドされます

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属性は、フィールドまたはゲッター/セッターのペアのように名前が付けられ
、たとえばルートノードに 配置されます

@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 に答える