Java 使用XStream反序列化-ArrayList保持null
我对XStream(从XML到java对象)的反序列化有问题 反序列化工作得很好,除了可重复的元素(必须转换为列表) 我的XML: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> <
<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!我很了解它是如何工作的!现在一切都好了=)