2012-10-19 110 views
0

情況下,我救了我的CONFIGRATION細節在一個XML文件的結構somewat這樣編組不工作:在嵌套DTO

<A> 
    <b> 
     <name>xxxxx</name> 
     <age>xxxxx</age> 
     <c> 
      <someFeilds>yyyy</someFeilds> 
     </c> 
     <c> 
      <someFeilds>yyyy</someFeilds> 
     </c> 
     <c> 
      <someFeilds>yyyy</someFeilds> 
     </c> 
    </b> 
    <b> 
     <name>xxxxx</name> 
     <age>xxxxx</age> 
     <c> 
      <someFeilds>yyyy</someFeilds> 
     </c> 
    </b> 
</A> 

我能夠把它封送到我的DTO A whoes結構

class A { 
    public ArrayList<B> bdtoInst; 
} 
class B { 
    public String name; 
    public String age; 
    public ArrayList<C> cdtoInst; 
} 
class C { 
    public String someFeilds; 
} 

西河declartion是

XStream xStream = new XStream(); 
    xStream.alias("A", A.class); 
    xStream.addImplicitCollection(A.class, "bdtoInst"); 
    xStream.alias("b", B.class); 
    xStream.addImplicitCollection(B.class, "cdtoInst"); 
    xStream.alias("c", C.class); 

我能夠把它封送到我的DTO,但是當我解組吧,我沒有得到正確的格式,它是未來這樣的:

<A> 
    <b> 
     <name>xxxxx</name> 
     <age>xxxxx</age> 
     <c> 
      <someFeilds>yyyy</someFeilds> 
     </c> 
     <c> 
      <someFeilds>yyyy</someFeilds> 
     </c> 
     <c> 
      <someFeilds>yyyy</someFeilds> 
     </c> 
     <c> 
      <someFeilds>yyyy</someFeilds> 
     </c> 
    </b> 
    <b> 
     <name>xxxxx</name> 
     <age>xxxxx</age> 
     <c reference="../../b/c"/> 
    </b> 
</A> 

我使用的XStream-1.4.3.jar。

+0

由於在xstream鏈接中使用了XPATH_RELATIVE_REFERENCES,我得到了:http://xstream.codehaus.org/graphs.html,但我無法瞭解爲什麼所有都會進入第一個節點。 –

+0

'C'類只有一個字符串變量,但是你正在向它提供多個值。 –

+0

是的,我的錯誤,我做了上面的更改。 –

回答

0

因爲XStream的鏈接中使用XPATH_RELATIVE_REFERENCES的:在XStream的聲明xstream.codehaus.org/graphs.html 我們必須添加

xstream.setMode(XStream.NO_REFERENCES); 

比,而不是標誌着refrence值將被放置。