0

構成の詳細をxmlファイルに保存しています。その構造は次のようなものです

<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 Awhoes構造にマーシャリングすることができます

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

Xstream宣言は

    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を使用しています。

4

1 に答える 1

0

XPATH_RELATIVE_REFERENCES が xstream リンクで使用されているため、xstream 宣言で xstream.codehaus.org/graphs.html を追加する必要があります。

  xstream.setMode(XStream.NO_REFERENCES);

マークする代わりに、refrence 値が配置されます。

于 2012-11-01T19:07:09.717 に答える