当前位置: 代码迷 >> Eclipse >> xstream将xml转换为javabean的有关问题
  详细解决方案

xstream将xml转换为javabean的有关问题

热度:4   发布时间:2016-04-23 02:10:44.0
xstream将xml转换为javabean的问题
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);
  相关解决方案