JAXB Binding customization

woe

Neues Mitglied
Hallo,

Ich habe folgendene ComplexType:
[xml]
<xs:complexType>
<xs:all minOccurs="0">
<xs:element name="Message" minOccurs="0"/>
<xs:element name="StackTrace" minOccurs="0"/>
</xs:all>
</xs:complexType>
[/xml]
In den beiden Elementen befinden sich nur Zeichenketten, ich soll das XSD-File jedoch so gut als möglich nicht verändern.

Die beiden Elemente Message und StackTrace werden jeweils immer auf ein Object gemappt, da ja kein Typ angegeben wird.

Beim Debuggen hab ich jedoch gesehen, dass der dynamische Typ des Objects "ElementNSImpl" ist, welcher jedoch bereits als deprecated markiert wurde.

Gibt es eine Möglichkeit, dass ich mit Hilfe eines Binding-Files dem JAXB Compiler sage, dass er die beiden Elemente auf einen String mappen soll?

vielen Danke im Voraus
Florian
 
Zuletzt bearbeitet:
Ich hab es mit folgendem Binding probiert:


[xml]
<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:bindings schemaLocation="vstst.xsd" node="/xs:schema">
<jxb:bindings node="//xs:complexType[@name='OutputType']//xs:all//xs:element[@name='ErrorInfo']//xs:complexType//xs:all//xs:element[@name='Message']">
<jxb😛roperty name="Message">
<jxb:baseType>
<jxb:javaType name="java.lang.String" ></jxb:javaType>
</jxb:baseType>
</jxb😛roperty>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
[/xml]

Hier kommt jedoch folgende Fehlermeldung, wenn ich die Javaklassen generieren möchte:

[ERROR] compiler was unable to honor this javaType customization. It is attached to a wrong place, or its inconsistent with other bindings.
line 22 of file:/C:/Users/florianw/Documents/NetBeansProjects/JavaApplication2/xml-resources/jaxb/VSTST_Binding/binding.jxb.xml

[ERROR] (the above customization is attached to the following location in the schema)
line 926 of file:/C:/Users/florianw/Documents/NetBeansProjects/JavaApplication2/xml-resources/jaxb/VSTST_Binding/vstst.xsd

...obwohl die Syntax eigentlich so richtig sein müsste.

lg Florian
 
Die beiden Elemente Message und StackTrace werden jeweils immer auf ein Object gemappt, da ja kein Typ angegeben wird.
Ich finde es gerade nicht in der Spec, aber sollte nicht String der Default sein wenn kein type oder ref angegeben ist?

Wenn es nicht Jaxb sein muss, dann kannst du das Problem auch mit EMF lösen.
 

Zurück
Oben