Я использую Xstream libray для разбора xml, но имею EXception: com.thoughtworks.xstream.converters.ConversionException: название элемента типа com.mycontacts.model.explain32.Title32 не определено как поле в типа java.lang.Objectанализировать XML на POJO с помощью библиотеки xStream
explain32.xml
<?xml version="1.0" encoding="UTF-8"?>
<explain>
<data>
<title name="123"/>
</data>
<data>
<title name="234"/>
</data>
</explain>
Java Bean:
public class ExplainXmlBody32 {
private List<ExplainXmlData32> data = new ArrayList<ExplainXmlData32>();
}
public class ExplainXmlData32 {
private Title32 title;
}
public class Title32 {
String name;
}
, и я разбора XML, такие как:
private void parseXML_explain32(){
try{
String filePath = Environment.getExternalStorageDirectory() + "/myxml/explain32.xml";
String strXML = IOUtils.toString(new FileInputStream(new File(filePath)), "utf-8");
tvShow.setText(strXML);
XStream xStream = new XStream();
xStream.alias("explain", ExplainXmlBody32.class);
xStream.alias("data", ExplainXmlData32.class);
xStream.alias("title", Title32.class);
// xStream.aliasField("title", ExplainXmlData32.class, "title");
xStream.aliasAttribute(Title32.class, "name", "name");
xStream.addImplicitCollection(ExplainXmlBody32.class, "data");
// xStream.addImplicitCollection(ExplainXmlData32.class, "titles");
// XOAlias.configExplainXml(xStream);
ExplainXmlBody32 explain32 = (ExplainXmlBody32) xStream.fromXML(strXML);
System.out.println("explain32, size:" + explain32.getData().size());
}catch(Exception e){
e.printStackTrace();
}
}
инфо исключение:
com.thoughtworks.xstream.converters.ConversionException: Element title of type com.mycontacts.model.explain32.Title32 is not defined as field in type java.lang.Object
---- Debugging information ----
class : com.mycontacts.model.explain32.ExplainXmlBody32
required-type : java.lang.Object
path : /explain/data/title
line number : 5
как улучшить свой код и решить эту проблему?
Прошу прощения, нет [XmlRoot («объяснять»)] в xStream и «private List data = new List ();" невозможно. –
Qohen