1

XStream (XML から Java オブジェクトへ) を使用した逆シリアル化に問題があります。

逆シリアル化は、繰り返し可能な要素 (リストに変換する必要があります) を除いて、うまく機能します...

私のXML:

<DATA>
    <ANNUAIRES>
        <REC_ANNUAIRE>
            <NOPERS>1815985</NOPERS>
            <NOM>Dubois A. (Evilard)</NOM>
            <LIGNEADR1>DUBOIS A.</LIGNEADR1>
        </REC_ANNUAIRE>
        <REC_ANNUAIRE>
            <NOPERS>0229984</NOPERS>
            <NOM>Dubois Abel (La Chaux-de-Fonds)</NOM>
            <LIGNEADR1>DUBOIS ABEL</LIGNEADR1>
        </REC_ANNUAIRE>
        <REC_ANNUAIRE>
            <NOPERS>0013717</NOPERS>
            <NOM>Dubois Achim (Corpataux-Magnedens)</NOM>
            <LIGNEADR1>DUBOIS ACHIM</LIGNEADR1>
        </REC_ANNUAIRE>
        <REC_ANNUAIRE>
            <NOPERS>1602681</NOPERS>
            <NOM>Dubois Adrienne (Orvin)</NOM>
            <LIGNEADR1>DUBOIS ADRIENNE</LIGNEADR1>
        </REC_ANNUAIRE>
        <REC_ANNUAIRE>
            <NOPERS>0384177</NOPERS>
            <NOM>Dubois Agnes (Thun 7)</NOM>
            <LIGNEADR1>DUBOIS AGNES</LIGNEADR1>
        </REC_ANNUAIRE>
        <REC_ANNUAIRE>
            <NOPERS>1424276</NOPERS>
            <NOM>Dubois Agnes (Bussigny-Lausanne)</NOM>
            <LIGNEADR1>DUBOIS AGNES</LIGNEADR1>
        </REC_ANNUAIRE>
        <NBREC EOF="False">50</NBREC>
        <DUREE_EXECSQL>0</DUREE_EXECSQL>
        <DUREE_BUILDXML>0</DUREE_BUILDXML>
    </ANNUAIRES>
</DATA>

私のXStreamコード:

XStream xs = new XStream();

xs.alias("DATA", PojoPersonne.class);
xs.alias("REC_ANNUAIRE", Personne.class);

xs.aliasField("ANNUAIRES", PojoPersonne.class, "annuaire");
xs.aliasField("NOPERS", Personne.class, "idPersonne");
xs.aliasField("NOM", Personne.class, "identite");
xs.aliasField("STATUS", PojoPersonne.class, "status");


xs.addImplicitCollection(PojoPersonne.class, "listePersonne");


PojoPersonne pojo = (PojoPersonne)xs.fromXML(xml);
System.out.println(pojo);
pojo.afficheListe();

私の PojoPersonne クラス:

public class PojoPersonne {
    private String annuaire;
    private List<Personne> listePersonne = new ArrayList<>();
    private String status;

    public PojoPersonne(String annuaire, ArrayList<Personne> listePersonne, String status){
        this.annuaire = annuaire;
        this.listePersonne = listePersonne;
        this.status = status;
    }
    public PojoPersonne(){
        this.listePersonne = new ArrayList<>();
    }
}

したがって、問題はlistePersonne ArrayListからのものです...常にnullです(または使用する場合は空ですXStream xs = new XStream(new PureJavaReflectionProvider());

ご協力いただきありがとうございます

4

1 に答える 1

1

ArrayList のクラスを作成して使用する必要があります。

xstream.addImplicitCollection(Annuaries.class, "ANNUAIRES");

<DATA></DATA>また、あなたがそれを必要としないことを失います。このリンクで説明されているようなものでなければなりません

于 2013-07-04T18:37:16.717 に答える