我有關於將XML轉換爲Java對象的問題,在這裏我使用JAXB。
在我的情況:如何自定義JAXBContext Unmarshaller複雜的情況下
XML數據:XML數據的
<persons>
<person>
<name>Aris Tonar</name>
<age />
<nickname />
<saldo />
</person>
</persons>
JAVA CLASS:
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();
它會給結果: 人名= 「阿里斯Tonar」
人年齡= NULL
人暱稱= 「」
人物ID = NULL
人saldo = NULL
但不是那個結果我想要的,我想JAXB會給出結果:
Person name =「Aris Tonar」
人年齡= 0
人暱稱= 「」
人物ID = NULL
人saldo = 0
- 我想這在XML數據中聲明的每一個元素會:它是否值指定JAXB會解釋它是正常的(如名稱元素),但如果它的值沒有指定jaxb會將其解釋爲默認值(如年齡,暱稱,saldo元素)
- 如果元素未在XML數據中聲明,則jaxb會將其解釋爲null。 (如id元素)
是否有可能我做了嗎?可能會自定義JAXBContext代碼?
+1 - 你說得對。 – 2012-08-16 11:44:18
非常感謝Err,你的解釋是我的解決方案,, – 2012-08-18 09:09:29
hallo Err,我有其他問題.. 我的Java類,它也是該類中的xml註釋是來自xsd文件的JAXB Binding的結果,在我的情況下JAXB Binding define '@XmlAttribute'屬性,所以我如何爲該屬性分配defaultValue。 謝謝 – 2012-08-19 07:33:53