我有关于将 XML 转换为 Java 对象的问题,在这里我使用 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();
它将给出结果:人名=“Aris Tonar”
人年龄=空
人昵称=“”
人ID=空
人萨尔多=空
但不是我想要的结果,我希望 JAXB 会给出结果:
人名 = "Aris Tonar"
人年龄 = 0
人昵称 = ""
人 id = null
人萨尔多 = 0
- 我希望在 XML DATA 中声明的每个元素都将:如果它的值指定 jaxb 会将其解释为正常值(如 name 元素)但如果它的值未指定 jaxb 将其解释为默认值(如年龄、昵称、saldo 元素)
- 如果元素未在 XML 数据中声明,则 jaxb 会将其解释为 null。(如 id 元素)
我是否可以这样做?可能与自定义 JAXBContext 代码有关?