我不想在我的课上使用注释来编组/解组XML。我知道只要属性名称和结构匹配,jaxb就不需要注释来将xml解组成对象。它适用于数字和字符串但它似乎不适用于布尔值。这些总是以空值结束,当编组时,布尔属性不会显示在生成的XML中。我可以在不使用注释的情况下使其工作吗?
答案 0 :(得分:0)
您至少需要在根类上使用@XmlRootElement
注释
布尔getter的首选命名约定是isSomething()
,而不是getSomething()
。
以下Java类
@XmlRootElement
public class Root {
private Boolean something;
public Boolean isSomething() {
return something;
}
public void setSomething(Boolean something) {
this.something = something;
}
}
使用此XML输入正常工作:
<root>
<something>true</something>
</root>
我已经使用这种主要方法进行了测试:
public static void main(String[] args) throws Exception {
JAXBContext context = JAXBContext.newInstance(Root.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
File file = new File("root.xml");
Root root = (Root) unmarshaller.unmarshal(file);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
}
生成的XML输出是:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<something>true</something>
</root>