Para valores XML, el valor predeterminado va dentro del método getter.
por ejemplo,
customer.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="Customer">
<complexType>
<sequence>
<element name="element" type="string" maxOccurs="1" minOccurs="0" default="defaultElementName"></element>
</sequence>
<attribute name="attribute" type="string" default="defaultAttributeValue"></attribute>
</complexType>
</element>
</schema>
Se generará clase como a continuación.
@XmlRootElement(name = "Customer")
public class Customer {
@XmlElement(required = true, defaultValue = "defaultElementName")
protected String element;
@XmlAttribute(name = "attribute")
protected String attribute;
......
public String getAttribute() {
//here the default value is set.
if (attribute == null) {
return "defaultAttributeValue";
} else {
return attribute;
}
}
Creado XML de ejemplo para leer
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Customer><element/></Customer>
cuando escribimos la lógica para ordenar en nuestra clase principal.
File file = new File("...src/com/testdefault/xsd/CustomerRead.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
System.out.println(customer.getElement());
System.out.println(customer.getAttribute());
Se imprimirá en consola. defaultElementName defaultAttributeValue
P.S -: para obtener el valor por defecto de elementos que necesita para tener una copia en blanco del elemento en XML que está siendo formateado.
Lo que ... la anotación efectivamente no tiene alguna clave DefaultValue. Estoy bastante sorprendido. –
Se han discutido los valores predeterminados para los elementos [aquí] (http://stackoverflow.com/questions/371127) - quizás lo ayuden con los atributos. –