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