需要一个空的XML,而解组JAXB注释类
问题描述:
我有一个JAXB注解类客户如下需要一个空的XML,而解组JAXB注释类
@XmlRootElement(namespace = "http://www.abc.com/customer")
public class Customer{
private String name;
private Address address;
@XmlTransient
private HashSet set = new HashSet<String>();
public String getName(){
return name;
}
@XmlElement(name = "Name", namespace = "http://www.abc.com/customer")
public void setName(String name){
this.name = name;
set.add("name");
}
public String getAddress(){
return address;
}
@XmlElement(name = "Address", namespace = "http://www.abc.com/customer")
public void setAddress(Address address){
this.address = address;
set.add("address");
}
public HashSet getSet(){
return set;
}
}
我需要返回表示此给用户一个空的XML,这样他可以填充necesary值在XML和发送请求 所以我需要的是:
<Customer>
<Name></Name>
<Address></Address>
</Customer>
如果我简单地创建一个空的对象
Customer cust = new Customer() ;
marshaller.marshall(cust,sw);
我所得到的只是顶级元素,因为该类的其他字段未设置。
我能做些什么来获得这样一个空的XML?我尝试将nillable = true注释添加到元素,但是,这返回给我一个xsi:nil =“true”的XML,然后导致我的反编组人员忽略此操作。
我该如何做到这一点?
答
类似<Name></Name>
表示一个空的非空字符串,但是您的java对象将用空值初始化。如果你想让JAXB调出空值,你需要设置这些值:
Customer cust = new Customer() ;
cust.setName("");
cust.setAddress("");
marshaller.marshall(cust, sw);
我的类可以有任何数据类型的成员。如果它的整数,我将不得不初始化为0,布尔值为false等 我正在写一个通用程序,应该给我一个空白的所有元素,而不考虑数据类型,还初始化复杂类型及其元素与一个空白值。这意味着我将不得不循环遍历所有元素及其子元素。 – sswdeveloper 2010-04-22 11:04:47
@sswdeveloper:的确如此。然而,这是它的工作方式。 XML中的' '意味着不存在任何元素的不同之处。如果你想要这个元素,你必须提供一个值。 –
skaffman
2010-04-22 11:14:27