2011-08-02 67 views
-1

好的,我是JAXB的新手,無法找到正確的文檔來幫助我完成這個任務,我已經閱讀了一大堆,但仍然不明白JaxB正在做什麼。JAXB Unmarshalls XML錯誤

我有一個類,叫它容器。它由MyContainer擴展。 MyContainer除了從Container繼承外,還有一個額外的布爾值。

不管怎麼說,這是JAXB執法官myContainer中

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<MyContainer name="container" id="1"> 
    <boolVal>false</boolVal> 
    <ListOfResources> //Using @XmlElementWrapper(name=.. 
     <child> 
      <ID>Test Comp 1</ID> 
     </child> 
     <child> 
      <ID>Test Comp 2</ID> 
     </child> 
    </ListOfResources> 
</MyContainer> 

如何我不明白的是標​​籤 「孩子」。唯一名爲child的是名單。該列表包含對象(其中有一個字符串屬性,ID),但該對象不應該是「孩子」。然而,真正的問題是當我去德馬舍爾課堂時。該列表將填入列出的「孩子」。我沒有看到我缺少的東西。我沒有得到一個JAXB異常,請不要忘記,但我當我檢查解組對象的列表是無人居住

編輯:澄清

我很抱歉,我的意思是JAXB威爾·馬歇爾的元素在列表中,儘管列表中的每個元素都具有列表(子)的名稱。然而,當它進入demarshall時,它不會填充新對象中的列表。

EDIT2:電流設定

public void setChildren(List<Resource<IType>> other) { 
    Iterator iterator = other.iterator(); 
    while(iterator.hasNext()){ 
     Resource<IType> piece = 
      new Resource<IType>((Resource<IType>) iterator.next()); 
     this.listOfResources.add(piece); 
    } 

} 
+0

可能重複[JAXB不按預期Marshall](http://stackoverflow.com/questions/6915201/jaxb-does-not-marshall-as-expected) –

回答

0

我不知道你的問題是什麼。首先你說這個清單將填充「孩子」,然後你說這個清單沒有填充。這是什麼,它與你期望看到的有什麼不同?如果某些事情沒有得到滿足,最常見的原因是你沒有一個良好的財產製定者。

在命名上,一個元素總是與映射它的屬性命名相同。您可以使用@XmlElement(name="...")更改元素的名稱,或者如果您希望元素以屬性引用的對象命名(例如組成列表的對象),請使用@XmlElementRef

+0

好的,謝謝你的@ElementRef,但事實上,當我對新的列表進行demarshall沒有得到填充仍然是我的主要問題。 – user875230

+0

那麼你有適當的「setListOfResources()」設置?我們可能需要看到您正在嘗試編組/解組的課程以獲得更多幫助。 –

+0

再次感謝Ryan的回覆,我現在不再使用該代碼庫,但是我現在的設置者會將原始問題放入查看中 – user875230