Hallo,
ich habe eine DTD vorgegeben (kann auch nicht in xsd umgewandelt werden), die in ihrer Beschreibung "gemischte" Elemente hat in der Form
, also das Element LABEL mit Text und/oder einem Element FRAGMENT bedienen können muss.
Bei meinen Googl-Recherchen bin ich darauf gestoßen, dass dieses Konstrukt mit der Annotation @XMLMixed zu lösen ist. Ich habe die durch das Jaxb2-Maven-Plugin generierten Klassen per Hand editiert und das Tag entsprechend eingefügt, so dass ein unmarshall auch korrekt die Daten aus meiner XML-Datei in die Klassen schreibt. Da sich die DTD aber auch jederzeit ändern kann, möchte ich nicht jedes Mal bei einem neuen Generieren der Klassen die Annotation per Hand nachpflegen, sondern hätte gern die Klassen gleich vollständig durch das Maven Plugin generiert. Dafür habe ich im Netz gefunden, dass mit einer entsprechenden binding-Datei diese Annotation geschrieben werden kann.
Beim Ausführen des Befehls
bekomme ich jedoch den Fehler angezeigt:
Kann mir jemand weiterhelfen, worin das Problem besteht?
Danke im Voraus, anko
ich habe eine DTD vorgegeben (kann auch nicht in xsd umgewandelt werden), die in ihrer Beschreibung "gemischte" Elemente hat in der Form
Code:
<!ELEMENT LABEL (#PCDATA | FRAGMENT)*>
Bei meinen Googl-Recherchen bin ich darauf gestoßen, dass dieses Konstrukt mit der Annotation @XMLMixed zu lösen ist. Ich habe die durch das Jaxb2-Maven-Plugin generierten Klassen per Hand editiert und das Tag entsprechend eingefügt, so dass ein unmarshall auch korrekt die Daten aus meiner XML-Datei in die Klassen schreibt. Da sich die DTD aber auch jederzeit ändern kann, möchte ich nicht jedes Mal bei einem neuen Generieren der Klassen die Annotation per Hand nachpflegen, sondern hätte gern die Klassen gleich vollständig durch das Maven Plugin generiert. Dafür habe ich im Netz gefunden, dass mit einer entsprechenden binding-Datei diese Annotation geschrieben werden kann.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jxb:extensionBindingPrefixes="xjc"
jxb:version="2.1">
<jxb:globalBindings generateIsSetMethod="true" generateMixedExtensions="true">
<xjc:serializable uid="1" />
<xjc:simple />
</jxb:globalBindings>
</jxb:bindings>
Beim Ausführen des Befehls
Code:
xjc -dtd -d target/generated-sources/ -b src/main/resources/binding/binding.xjb -p com.example src/main/resources/lib/my.dtd
bekomme ich jedoch den Fehler angezeigt:
Unsupported binding namespace "http://java.sun.com/xml/ns/jaxb". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"?
line 5 of file:/home/anko/workspace/Catalogs/src/main/resources/binding/binding.xjb
Kann mir jemand weiterhelfen, worin das Problem besteht?
Danke im Voraus, anko