如何跳过字段并仅使用JAXB解组该字段的特定成员?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何跳过字段并仅使用JAXB解组该字段的特定成员?相关的知识,希望对你有一定的参考价值。
我需要解组为我创建模型的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);
}
以上是关于如何跳过字段并仅使用JAXB解组该字段的特定成员?的主要内容,如果未能解决你的问题,请参考以下文章