XML から Java Object への変換に関する問題があります。ここでは JAXB を使用します。
私の場合:
XML データ:
<persons>
<person>
<name>Aris Tonar</name>
<age />
<nickname />
<saldo />
</person>
</persons>
XML データの Java クラス :
public class Person{
private String name;
private Integer age;
private String nickName;
private Integer id;
private Double saldo;
/**
*Setter and Getter
*/
}
そして、標準のJAXBContext Unmarshallerコードを使用してJavaオブジェクトに解析する場合。コード付き:
JAXBContext context = JAXBContext.newInstance(Person.class.getPackage().getName());
Unmarshaller unmarshaller = context.createUnmarshaller();
JAXBElement element = (JAXBElement) unmarshaller.unmarshal(new StreamSource(new StringReader(stringOfXmlData.toString())));
Person obj = (Person) element.getValue();
結果が得られます: Person name = "Aris Tonar"
Person age = null Person Nickname =
""
Person id = null
Person saldo = null
しかし、私が望む結果ではなく、JAXBが結果を出すことを望みます:
人物名 = "Aris Tonar"
人物年齢 = 0
人物ニックネーム = ""
人物 ID = null
人物サルド = 0
- XML DATA で宣言されたすべての要素が必要です: 値が指定されている場合、jaxb は通常 (name 要素のように) として解釈しますが、値が指定されていない場合、jaxb はデフォルト値 (age、nickname、saldo 要素など) として解釈します。
- 要素が XML データで宣言されていない場合、jaxb はそれを null として解釈します (id 要素のように)。
できるかどうか?JAXBContextコードのカスタマイズに関係している可能性があります??