Java 使用XStream反序列化-ArrayList保持null

Java 使用XStream反序列化-ArrayList保持null,java,xml,xstream,Java,Xml,Xstream,我对XStream(从XML到java对象)的反序列化有问题 反序列化工作得很好,除了可重复的元素(必须转换为列表) 我的XML: <DATA> <ANNUAIRES> <REC_ANNUAIRE> <NOPERS>1815985</NOPERS> <NOM>Dubois A. (Evilard)</NOM> <

我对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>
我的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<>();
    }
}
公共类PojoPersonne{
私人字符串年鉴;
private List listePersonne=new ArrayList();
私有字符串状态;
public PojoPersonne(字符串年鉴、ArrayList ListPersonne、字符串状态){
this.annuaire=annuaire;
this.listePersonne=listePersonne;
这个状态=状态;
}
公共事业人员(){
this.listePersonne=新的ArrayList();
}
}
所以问题来自ListPersonne ArrayList。。。它总是空的(如果我使用
XStream xs=new XStream(new PureJavaReflectionProvider());
,则为空)


感谢您的帮助

您需要为ArrayList创建一个类并使用:

xstream.addImplicitCollection(Annuaries.class, "ANNUAIRES");
同时,如果您不需要,请丢失

应该如

中所述,您需要为ArrayList创建一个类并使用:

xstream.addImplicitCollection(Annuaries.class, "ANNUAIRES");
同时,如果您不需要,请丢失

应该像

中解释的那样,谢谢,但是我不能没有
,如果我试图忽略根元素,我有一个异常(
CannotResolveClassException:DATA
)。但是有了你的帮助,情况好多了。。。差不多。我现在有另一个问题。当我尝试恢复结果(ListPersonne pojo=(
ListPersonne)xs.fromXML(xml);
)时,强制转换不起作用(
vaudoiseLib.pojo.personne.listPersonne不能强制转换为vaudoiseLib.model.personne.personne
)。我想这可能是因为我的XML(
),但我不知道如何解决这个问题。我只是试着从XML中“手动”删除数据根元素(所以我使用像根一样的元素),一切都很好。。。但我无法编辑XML,因此我必须处理以下问题..:(我没有任何想法…只需要做另一个类,Data.class。这个类有什么?一个年度实例。我回到办公室后会给你看一个工作示例谢谢!我很理解它是如何工作的!现在一切都好了=)谢谢,但我不能没有
,如果我试图忽略根元素,我有一个例外(
CannotResolveClassException:DATA
)。但是在你的帮助下,情况好多了……差不多。我现在有另一个问题。当我尝试恢复结果时(ListPersonne pojo=(
ListPersonne)xs.fromXML(xml);
),强制转换不起作用(
vaudoiseLib.pojo.personne.ListePersonne无法强制转换为vaudoiseLib.model.personne.personne
)。我想这可能是因为我的XML(
),但我不知道如何解决这个问题……另外,我只是尝试从XML中“手动”删除数据根元素(因此我使用类似于根的年表)而且一切都很好…但是我不能编辑XML,所以我必须这样做…(我不知道…只需要做另一个类,Data.class。这个类有什么?一个Annualies实例。当我回到办公室时,我会给你展示一个工作示例Hanks!我很了解它是如何工作的!现在一切都好了=)