如何跳过字段并仅使用JAXB解组该字段的特定成员?

问题描述 投票:1回答:1

我需要解组为我创建模型的XML文件。在XML文件中,我有一个元素名称,在我的模型中是Person类型字段的成员。我想要做的是将“name”元素解组为person.name,但问题是在XML文件中没有Person的节点,它右转到“name”。是否可以通过JAXB实现这一目标?

这是XML文件的简化版本:

<root>
    <id>1</id>
    <name>Jack</name>
</root>

这些是我试图将XML解组为的模型:

@XmlRootElement (name = "root")
public class Container{
    @XmlElement
    int id;

    //how should I annotate this?
    Person person;
}
public class Person{
    int age;

    //and how should I annotate this one?
    String name;
}

我期待发生的事情:我有一个容器,container.person.name.equals("Jack") && container.id == 1

我试图在personPerson.name(尝试所有组合)中设置XmlElement无济于事。

使用这种方法(不包括XML中的人)的关键是我真实代码中的这个“名称”是一个表达式,我需要处理它并将值分配给人的不同字段。

java xml-parsing jaxb unmarshalling
1个回答
0
投票

要进行此特定映射,请添加name getter并使用@XmlElement对其进行注释。 这个想法是使用name中定义的Container getter和setter来允许JAXB依赖于Person字段,因为它会对root元素进行编组或解组。

仅允许解组:

@XmlElement
public void setName(String name) {
    if (person == null){
       person = new Person();
    }
    person.setName(name);
}

允许编组和解组:

@XmlElement
public String getName() {
     return person.getName();
}

public void setName(String name) {
    if (person == null){
       person = new Person();
    }
    person.setName(name);
}
© www.soinside.com 2019 - 2024. All rights reserved.