gpt4 book ai didi

java - JAXB 注释类 - 设置不是元素的变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:33 24 4
gpt4 key购买 nike

我有一个 JAXB 注释类 say

@XmlRootElement(namespace = "http://www.abc.com/customer")
Class Customer{
@XmlElement(namespace = "http://www.abc.com/customer")
private String Name;
@XmlElement(namespace = "http://www.abc.com/customer")
private String Address;
@XmlTransient
private HashSet set = new HashSet();

public String getName(){
return Name;
}
public void setName(String name){
this.Name = name;
set.add("Name");
}


public String getAddress(){
return Address;
}
public void setAddress(String address){
this.Address = address;
set.add("Address");
}

public void getSet(){
return set;
}

我有一个表单的 XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Customer xmlns="http://www.abc.com/customer" >
<Name>Ralph</Name>
<Address>Newton Street</Address>
</Customer>

我使用 JAXB 解码来获取 XML 输入的对象表示。名称和地址的值设置正确。然而set 的值丢失了(因为它是 @XMLTransient,所以它被忽略了)

有没有办法确保它仍然设置在已解码的对象中?我可以使用其他一些注释吗?

最佳答案

尝试将注解放在方法上而不是字段上。具体来说,将@XmlElement放在getName()getAddress()上,将@XmlTransient放在getSet上(),并删除字段中的所有注释。

JAXB 然后应该使用 getter/setter 方法对来注入(inject)/检索数据,而不是字段,因为 setAddress() 将值添加到 set场,那应该会如你所料地工作。此外,因为 getSet() 被标记为 transient ,所以 set 的内容不应再次编码。

关于java - JAXB 注释类 - 设置不是元素的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2580978/

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