第一次使用XStream。对Java也相对较新。我一直试图绕过这个问题几个小时,但是看不出为什么下面的代码不起作用。
这是我得到的错误
Exception in thread "main" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field com.helloworld.XMLExtractData.group
---- Debugging information ----
message : No such field com.helloworld.XMLExtractData.group
field : group
class : com.helloworld.XMLExtractData
required-type : com.helloworld.XMLExtractData
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path : /repository/group
line number : 3
version : 1.4.9
-------------------------------
XML
<?xml version="1.0" standalone="yes"?>
<repository>
<group id="com.google">
<artifact id="gson" type="jar">
<version id="2.0.1">
<dep spec="2.0,2.0"/>
</version>
</artifact>
<artifact id="guava" type="jar">
<version id="13.0.1">
<dep spec="2.0,2.0"/>
</version>
</artifact>
</group>
</repository>
我的课程
import java.util.List;
public class XMLExtractData {
public Repository repository;
}
class Repository {
public List<Group> group;
}
class Group {
public List<Artifact> artifact;
public String id;
}
class Artifact {
public List<Version> version;
public String id;
public String type;
}
class Version {
public List<Dep> dep;
public String id;
}
class Dep {
public String spec;
}
主要
XStream xstream = new XStream();
xstream.alias("repository", XMLExtractData.class);
xstream.alias("group", Group.class);
//xstream.alias("artifact", Artifact.class);
//xstream.alias("version", Version.class);
//xstream.alias("dep", Dep.class);
XMLExtractData indexXML = (XMLExtractData) xstream.fromXML(new URL(indexURL));
indexXML.groups.stream().forEach((group) -> {
System.out.println(group.id);
});