gpt4 book ai didi

java - 如何使用 JAXB 跳过某个字段并仅解码该字段的特定成员?

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:59 24 4
gpt4 key购买 nike

我需要解码一个已为其创建模型的 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 中的 person)的要点是,我的真实代码中的这个“名称”是一个表达式,我需要处理它并将值分配给 person 的不同字段。

最佳答案

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

仅允许解码:

@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);
}

关于java - 如何使用 JAXB 跳过某个字段并仅解码该字段的特定成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49096219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com