0
我不想在我的类上使用注释来从XML编组/取消编组。只要属性名称和结构匹配,我知道jaxb不需要注解来将xml解组到对象中。它适用于数字和字符串,但它似乎不适用于布尔值。这些总是以空值结尾,并且在编组时,布尔属性不会显示在结果XML.how中,我可以在不使用注释的情况下使其工作吗?JAXB解组布尔值而不使用注释
我不想在我的类上使用注释来从XML编组/取消编组。只要属性名称和结构匹配,我知道jaxb不需要注解来将xml解组到对象中。它适用于数字和字符串,但它似乎不适用于布尔值。这些总是以空值结尾,并且在编组时,布尔属性不会显示在结果XML.how中,我可以在不使用注释的情况下使其工作吗?JAXB解组布尔值而不使用注释
你至少需要在你的根类上注解@XmlRootElement
。
布尔型吸气剂的首选命名约定是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>
它没有为我工作。这很奇怪,没有需要注释的布尔包装器没有默认绑定行为。无论如何,我不想花太多时间在它上面。我创建了一个帮助类来解组,因为我不能注释目标类 – kfc
@kfc我用Java 8(不知道这是否相关)。 –
我也使用java 8 – kfc