2017-06-29 44 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