私は属性を持っています:
生成された JAXB オブジェクトに関連付けられた getter メソッドは次のようになります。
public String getUnits(){
if(units == null) return "metric";
else return units;
}
getUnits() は、マーシャリング時に JAXB Marshaller によって呼び出されず、値が設定されていません。なぜこれが呼び出されないのですか?
私は属性を持っています:
生成された JAXB オブジェクトに関連付けられた getter メソッドは次のようになります。
public String getUnits(){
if(units == null) return "metric";
else return units;
}
getUnits() は、マーシャリング時に JAXB Marshaller によって呼び出されず、値が設定されていません。なぜこれが呼び出されないのですか?
スキーマ.xsd
以下は、Java クラスの生成に使用した XML スキーマの簡易バージョンです。
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/schema" xmlns:tns="http://www.example.org/schema" elementFormDefault="qualified">
<element name="root">
<complexType>
<attribute name="units" fixed="metric"/>
</complexType>
</element>
</schema>
根
これにより、次のようなクラスが生成されます。が指定されているため@XmlAccessorType(XmlAccessType.FIELD)
、JAXB (JSR-222) 実装はメソッドにアクセスする代わりにフィールドから値を取得しますgetUnits()
。
package org.example.schema;
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "root")
public class Root {
@XmlAttribute(name = "units")
@XmlSchemaType(name = "anySimpleType")
protected String units;
public String getUnits() {
if (units == null) {
return "metric";
} else {
return units;
}
}
public void setUnits(String value) {
this.units = value;
}
}
詳細については