2014-01-25 44 views
12

按標題,我有一個XML文件中的元素的變量列表,我需要解組:JAXB編組的同名

<?xml version="1.0"?> 
<root> 
    <wrap> 
     <Element>something1</Element> 
     <Element>something2</Element> 
     <Element>something3</Element> 
    </wrap> 
</root> 

「包裝」是一個簡單的包裝,但「元素的數「各不相同。

我有兩個班,以方便對象爲JAXB:

包裝類:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name = "root") 
public class Wrap { 
    @XmlElementWrapper(name = "wrap") 
    @XmlElement(name = "Element") 
    private List<Element> elementList = new ArrayList<>(); 

    public Wrap() {} 

    public Wrap(List<Element> list) { 
     this.elementList = list; 
    } 

    public void addElement(Element element) { 
     this.elementList.add(element); 
    } 

    public List<Element> getWrap() { 
     return this.elementList; 
    } 

    public void setWrap(List<Element> wrap) { 
     this.elementList = wrap; 
    } 
} 

元素類:但是

@XmlRootElement(name = "Element") 
public class Element { 

    private String Element; 

    public Element() {} 

    public Element(String element) { 
     this.Element = element; 
    } 

    public String getElement() { 
     return Element; 
    } 

    public void setElement(String element) { 
     this.Element = element; 
    } 
} 

試圖解組XML完成,沒有錯誤,該元素值不會與元素對象一起存儲。相反,toString爲每個對象返回null。

我沒有用一些數據填充對象並將它們編組爲一個文件(如下所示)。這種格式當然是不正確的,應該與上面的XML匹配。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<root> 
    <wrap> 
     <Element> 
      <element>entry1</element> 
     </Element> 
     <Element> 
      <element>entry2</element> 
     </Element> 
     <Element> 
      <element>entry3</element> 
     </Element> 
    </wrap> 
</root> 

我研究這個與假設我的註釋是不正確的一段時間,現在,但也許是別的東西......

+0

從您的Element類註釋@XmlRootElement(name = 「元素」)。我想在包裝類中@XmlElement(name =「Element」)應該是@XmlElement(name =「element」)。不是嗎? – Helios

回答

4

你需要做到以下幾點:

  • 註釋elementElement@XmlValue
  • 確保註釋中元素名稱的大小寫與XML文檔中的名稱匹配。

更多信息

+0

這工作!儘管除了@XmlValue標記之外,我還在@XmlRootElement(name =「Element」)之上添加了「@XmlAccessorType(XmlAccessType.FIELD)」。非常感謝! – user1816198