xml文件内容如下:
<FDBK>
<sfid>NMFL</sfid>
<ertn>3</ertn>
<nmers>
<nmer>
<efnm>错误文件名称1</efnm>
<errs>错误原因</errs>
</nmer>
<nmer>
<efnm>错误文件名称2</efnm>
<errs>错误原因</errs>
</nmer>
<nmer>
<efnm>错误文件名称3</efnm>
<errs>错误原因</errs>
</nmer>
</nmers>
<fcers>
...
</fcers>
</FDBK>
我定义了三个类分别如下
public class FdmrVo {
getter/setter方法省略
private Long mrid;
private String mrnm;
private String sfid;
private Long ertn;
private String fstp;
private List<FdnmVo> nmers;
private List<FdctVo> fcers;
private String status;
private Long version;}
public class FdnmVo extends Object{
private Long mrid;
private String sfid;
private String efnm;
private String errs;
private Long efid;}
public class FdctVo {
private Long fcerid;
private Long mrid;
private String sfid;
private String erlc;
private String errs;
}
public ExtData<FdmrVo> importFdmr(File file,List<Filter> filters, Page page) throws Exception{
String mrnm=file.getName();
String xml=readFile(file);
FdmrVo msg=(FdmrVo)ReportUtil.msg2Bean(xml, FdmrVo.class);
msg=(FdmrVo)ReportUtil.msgToBean(xml, FdmrVo.class);
msg.setMrnm(mrnm);
ExtData<FdmrVo> data=doInsertFdmr(msg, filters);//(msg, filters,filters);
return data;
}
public static Object msg2Bean(String xml, Class clazz) {
XStream xstream = new XStream(new DomDriver("GBK"));
xstream.alias("FDBK", FdmrVo.class);
xstream.alias("nmer", FdnmVo.class);
xstream.addImplicitCollection(FdmrVo.class, "nmers");
xstream.alias("fcer", FdctVo.class);
xstream.addImplicitCollection(FdmrVo.class, "fcers");
return xstream.fromXML(xml);
}
出现错误。
com.thoughtworks.xstream.converters.ConversionException: Element nmer of type com.huateng.bussiness.fdmr.entity.FdnmVo is not defined as field in type java.lang.Object
---- Debugging information ----
class : com.huateng.bussiness.fdmr.entity.FdmrVo
required-type : java.lang.Object
path : /FDBK/nmers/nmer
-------------------------------
请问该如何解决啊!!!或者有什么更好的方法能解决这个转化问题呢
------解决方案--------------------
上面给work1,work2赋值时没注意,写错了,下面改正:
- Java code
Person[] myPersons = new Person[2]; List<Work> list = new ArrayList<Work>(); Work work1 = new Work(); work1.setCompany("GOogle"); work1.setWorkAge(10); Work work2 = new Work(); work2.setCompany("Apple"); work2.setWorkAge(1); list.add(work1); list.add(work2);