Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAXB解组-将子元素的属性映射到java对象_Java_Xml_Jaxb - Fatal编程技术网

JAXB解组-将子元素的属性映射到java对象

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

我无法将以下XML中
answername
标记的
aid
属性映射到
Answer
类的Java字段
aid

任何帮助都将不胜感激。提前谢谢

XML:

电流输出:

期望输出:


aid属性的setter和getter未命名为right。将它们分别重命名为getAidsetAid

在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
}