Ich benutze Gradle, um Java-Klassen basierend auf einer XML-Schema-Datei zu generieren. Ich verwende 'org.glassfish.jaxb: jaxb-xjc: 2.2.11' und 'org.glassfish.jaxb: jaxb-runtime: 2.2.11' als Abhängigkeiten, damit ich 'com.sun.tools.xjc' verwenden kann. XJC2Task 'Klasse zum Generieren der Klassen.Wie ändere ich XmlType von generierten JAXB-Klassen
Dies ist die Schemadatei:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="test"
targetNamespace="urn:oio:records:1.0.0"
xmlns="urn:oio:records:1.0.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="records" type="recordsType"/>
<xs:element name="record" type="recordType"/>
<xs:complexType name="recordsType">
<xs:sequence>
<xs:element ref="record" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="recordType">
<xs:attribute name="key" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
</xs:complexType>
</xs:schema>
Einer der generierten Klassen wie folgt aussehen:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "recordType")
public class RecordType {
@XmlAttribute(name = "key")
protected String key;
@XmlAttribute(name = "value")
protected String value;
public String getKey() {return key;}
public void setKey(String value) {this.key = value;}
public String getValue() {return value;}
public void setValue(String value) {this.value = value;}
}
Wie kann ich den Namen Wert in der @XmlType Anmerkung ändern? Ich mag es seine
@XmlType(name = "record")
ich versucht habe, mit einem bindingsfile und versuchte, mit dem <javaType>
-Tag in der bindingsfile zu experimentieren, aber ohne Glück.
EDIT: Der Grund, warum ich brauche, dies zu ändern ist, dass ich eine XML-Datei aufteilen müssen, um die stax Splitter von Camel mit (http://camel.apache.org/stax.html Abschnitt „iterieren eine Sammlung JAXB und StAX mit“). Dies zeigt das name-Attribut der @XmlType
-Annotation an, um das XML-Tag zu erkennen, das in der Datei aufgeteilt werden soll. Das erkannte Tag (<record>
) wird JAXB dann in eine RecordType-Java-Klasse umgewandelt.
Ich vergaß zu erwähnen, dass ich nicht die Schema-Dateien ändern kann. Ich habe einige weitere Informationen zu der Frage hinzugefügt, warum ich das brauche. – npeder