2017-06-29 43 views
0

我不想在我的类上使用注释来从XML编组/取消编组。只要属性名称和结构匹配,我知道jaxb不需要注解来将xml解组到对象中。它适用于数字和字符串,但它似乎不适用于布尔值。这些总是以空值结尾,并且在编组时,布尔属性不会显示在结果XML.how中,我可以在不使用注释的情况下使其工作吗?JAXB解组布尔值而不使用注释

回答

0

你至少需要在你的根类上注解@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> 
+0

它没有为我工作。这很奇怪,没有需要注释的布尔包装器没有默认绑定行为。无论如何,我不想花太多时间在它上面。我创建了一个帮助类来解组,因为我不能注释目标类 – kfc

+0

@kfc我用Java 8(不知道这是否相关)。 –

+0

我也使用java 8 – kfc