使用XStream反序列化XML:UnknownFieldException

时间:2016-05-16 18:33:57

标签: java xml xstream

第一次使用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);
    });

0 个答案:

没有答案
相关问题