JAXB解组-将子元素的属性映射到java对象
我无法将以下XML中JAXB解组-将子元素的属性映射到java对象,java,xml,jaxb,Java,Xml,Jaxb,我无法将以下XML中answername标记的aid属性映射到Answer类的Java字段aid 任何帮助都将不胜感激。提前谢谢 XML: 电流输出: 期望输出: aid属性的setter和getter未命名为right。将它们分别重命名为getAid和setAid。在XML中,“aid”是“answername”的属性,而不是Answer对象。如果您不介意更改XML,那么您所要做的就是将其上移一级 <?xml version="1.0" encoding="UTF-8" standalo
answername
标记的aid
属性映射到Answer
类的Java字段aid
任何帮助都将不胜感激。提前谢谢
XML:
电流输出:
期望输出:
aid属性的setter和getter未命名为right。将它们分别重命名为getAid和setAid。在XML中,“aid”是“answername”的属性,而不是Answer对象。如果您不介意更改XML,那么您所要做的就是将其上移一级
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<question id="1">
<answers aid="101">
<answername>java is a programming language</answername>
<postedby>ravi</postedby>
</answers>
<answers aid="102">
<answername>java is a platform</answername>
<postedby>john</postedby>
</answers>
<questionname>What is java?</questionname>
</question>
java是一种编程语言
拉维
java是一个平台
厕所
什么是java?
如果您确实希望保留相同的XML,那么您只需创建另一个具有“aid”属性和value元素的类“answername”,然后Answer将其作为元素。正如@TimurA已经说过的,您的Java类与XML文件的
元素不匹配。
如果希望保持XML文件的结构,那么需要调整Java类
在Answer
类中,删除aid
属性,
并更改answername
属性的类型:
@XmlAccessorType(XmlAccessType.FIELD)
public class Answer {
private Answername answername;
private String postedby;
// + constructors, getters, setters
}
为Answername
创建一个单独的类:
@XmlAccessorType(XmlAccessType.FIELD)
public class Answername {
@XmlAttribute
private int aid;
@XmlValue
private String text;
// + constructors, getters, setters
}
我不知道答案,但加上一个“电流输出”和“期望输出”。我希望每个人都能写这样的问题。谢谢大家@TimurA,Thomas和George
1 What is java?
Answers:
0 java is a programming language ravi
0 java is a platform john
1 What is java?
Answers:
101 java is a programming language ravi
102 java is a platform john
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<question id="1">
<answers aid="101">
<answername>java is a programming language</answername>
<postedby>ravi</postedby>
</answers>
<answers aid="102">
<answername>java is a platform</answername>
<postedby>john</postedby>
</answers>
<questionname>What is java?</questionname>
</question>
@XmlAccessorType(XmlAccessType.FIELD)
public class Answer {
private Answername answername;
private String postedby;
// + constructors, getters, setters
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Answername {
@XmlAttribute
private int aid;
@XmlValue
private String text;
// + constructors, getters, setters
}