Wenn Sie das XML-Schema nicht ändern können, um das value-Element abschaltbar zu machen, können Sie Folgendes mit einer externen JAXB-Bindungsdatei tun:
Externe Bindungsdatei (binding.xml)
Sie könnten eine externe Bindungsdatei wie die folgende verwenden:
<jaxb:bindings
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc"
version="2.1">
<jaxb:bindings schemaLocation="double.xsd">
<jaxb:bindings node="//xs:element[@name='value']">
<jaxb:property>
<jaxb:baseType name="java.lang.Double"/>
</jaxb:property>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
XML-Schema - double.xsd
Die obige Bindungsdatei gilt für ein XML-Schema, das wie folgt aussieht:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="value" type="xs:double"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XJC-Anruf
xjc -d out -b binding.xml double.xsd
Generierte Klasse
package generated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"value"})
@XmlRootElement(name = "Root")
public class Root {
@XmlElement(required = true, type = Double.class)
protected Double value;
public Double getValue() {
return value;
}
public void setValue(Double value) {
this.value = value;
}
}