2010-04-22 2 views
0

У меня есть JAXB аннотированный класса Customer следующимнужен пустой 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 к элементам, но это возвращает мне XML с xsi: nil = "true", который затем вызывает мой unmarshaller, чтобы игнорировать это.

Как это достичь?

ответ

1

Нечто вроде <Name></Name> представляет собой пустую, ненулевую строку, но ваш объект java будет инициализирован нулями. Если вы хотите, чтобы JAXB собирал пустые значения, вам необходимо установить эти значения:

Customer cust = new Customer() ; 
cust.setName(""); 
cust.setAddress(""); 
marshaller.marshall(cust, sw); 
+0

Мой класс может иметь элементы любого типа данных. Если его целое число мне нужно будет инициализировать до 0, от boolean до false и т. Д. Я пишу общую программу, которая должна дать мне пробел для всех элементов независимо от типа данных, а также инициализировать сложные типы и их элементы с помощью пустое значение. что означает, что мне придется рекурсивно прокручивать все элементы и их дочерние элементы. – sswdeveloper

+0

@sswdeveloper: Это правда. Однако так оно и работает. '' в XML означает другое, что нет присутствующего элемента. Если вы хотите, чтобы элемент присутствовал, вы должны указать значение. – skaffman

Смежные вопросы