gpt4 book ai didi

java - XStream - com.thoughtworks.xstream.converters.ConversionException

转载 作者:行者123 更新时间:2023-11-30 06:14:05 26 4
gpt4 key购买 nike

我正在尝试解析 XML 文档,这是文档的结构

    <students>
<student student_id="1">
<firstname>Lily</firstname>
<lastname>Brown</lastname>
<marks>
<first>62</first>
<second>90</second>
<third>94</third>
<forth>93</forth>
</marks>
</student>
</students>

但我收到此错误

    Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException: 
---- Debugging information ----
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : firstname
class : java.util.ArrayList
required-type : java.util.ArrayList
converter-type : com.thoughtworks.xstream.converters.collections.CollectionConverter
path : /students/student/firstname
line number : 4
class[1] : xstream$Students
converter-type[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
version : 1.4.10

有谁知道如何修复它,下面是类和解析部分

学生类(class)

@XStreamAlias("students")
public static class Students{
@XStreamImplicit(itemFieldName = "student")
public List<Student> student = new ArrayList<Student>();
}

学生.类(class)

    @XStreamAlias("student")
public static class Student {
String firstname;
String lastname;
@XStreamImplicit(itemFieldName = "marks")
private List<Marks> marks;
@XStreamAlias("student_id")
@XStreamAsAttribute
int student_id;
}

Marks.class

@XStreamAlias("marks")
public static class Marks{
int first;
int second;
int third;
int forth;
}

执行代码

    FileReader fileReader = new FileReader("src/100.xml");  
Class<?>[] classes = new Class[] { Students.class, Student.class, Marks.class };
XStream xstream = new XStream();
xstream.useAttributeFor(Student.class, "student_id");
xstream.alias("students", Students.class);
xstream.alias("student", Student.class);
xstream.alias("marks", Marks.class);
XStream.setupDefaultSecurity(xstream);
xstream.allowTypes(classes);
Students students = (Students) xstream.fromXML(fileReader);

非常感谢!

最佳答案

请在为Student中的相应字段添加@XStreamAlias("firstname")@XStreamAlias("lastname")后尝试类。

<小时/>

[已更新]

好的,有一些改变...

1)据我了解,您在 Student 中的代码“marks”不是数组,因此将其更改为在 Student 中键入“Marks”。

@XStreamAlias("student")
public class Student {
String firstname;
String lastname;

@XStreamAlias("marks")
private Marks marks;

@XStreamAsAttribute
@XStreamAlias("studentid")
String student_id;
}

2) 在您的代码中,将 xstream.alias("student", Student.class); 替换为 xstream.addImplicitArray(Students.class, "student", Student.class) ;

尝试使用此代码来读取 xml

        Class<?>[] classes = new Class[] { Students.class, Student.class, Marks.class };
XStream xstream = new XStream();
xstream.autodetectAnnotations(true);
xstream.processAnnotations(Students.class);
Students students = (Students) xstream.fromXML(xml);

希望有帮助。

关于java - XStream - com.thoughtworks.xstream.converters.ConversionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49603446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com