我需要解组为我创建模型的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
我试图在person
和Person.name
(尝试所有组合)中设置XmlElement无济于事。
使用这种方法(不包括XML中的人)的关键是我真实代码中的这个“名称”是一个表达式,我需要处理它并将值分配给人的不同字段。
要进行此特定映射,请添加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);
}