我正在使用XStream将 XML 字符串转换为 Java 对象。
我有大量数据,但我发布了下面的最小代码:
XStream xstream = new XStream(new StaxDriver());
xstream.alias("data", DetList.class);
xstream.alias("i", Details.class);
String s = new String("<data>\n"
+"\t<i Name='asia' type='continent' id='11'></i>\n"
+"\t<i Name='africa' type='continent' id='12'></i>\n"
+"\t<i Name='japan' type='country' id='13'></i>\n"
+"</data>");
System.out.println(s);
DetList data = (DetList) xstream.fromXML(s);
当我调试时,数据始终为null。
这是我的 DetList 类:
public class DetList {
private List<Details> detlist;
public List<Details> getDetlist() {
return detlist;
}
public void setDetlist(List<Details> detlist) {
this.detlist = detlist;
}
}
还有我的详细信息类:
public class Details {
private String Name;
private String type;
private String id;
//Getters and Setters are here.
}
data 为 null,应该包含 i 列表。
我怎样才能让它工作?
最佳答案
如果您有兴趣,这里是您的错误。一旦找到答案我就会替换它:
Exception in thread "main" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field application.DetList.i
---- Debugging information ----
message : No such field application.DetList.i
field : i
class : application.DetList
required-type : application.DetList
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path : /data/i
line number : 2
version : 1.4.9
-------------------------------
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.handleUnknownField(AbstractReflectionConverter.java:524)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:375)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:281)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:70)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1230)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1214)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1085)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1076)
at application.Tester.main(Tester.java:15)
关于Java XStream 将 XML 转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922380/