JAXB在不使用注释的情况下解组布尔值

时间:2017-06-29 15:05:36

标签: jaxb jaxb2

我不想在我的课上使用注释来编组/解组XML。我知道只要属性名称和结构匹配,jaxb就不需要注释来将xml解组成对象。它适用于数字和字符串但它似乎不适用于布尔值。这些总是以空值结束,当编组时,布尔属性不会显示在生成的XML中。我可以在不使用注释的情况下使其工作吗?

1 个答案:

答案 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>