Hallo zusammen,
ich habe aus einem XSD File das wie folgt aussieht versucht, mit Jaxb Klassen zu generieren:
[HIGHLIGHT="xml"]<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:com:test:interop"
xmlns:binxml="urn:com:text:binxml" elementFormDefault="qualified"
targetNamespace="urn:com:test:interop" binxml:uuid="fd69d395-22b6-3da6-b596-129e5ad57766">
...
<xsd:element name="freetext" binxml:msgtype="FREETXT" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="timestamp" type="TimestampType"/>
<xsd:element name="subject">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="60"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="text" type="TextType"/>
</xsd:sequence>
<xsd:attribute name="version" type="VersionType"/>
<xsd:attribute name="dir" use="optional" type="TextDirectionType" default="rtl"/>
</xsd:complexType>
</xsd:element>
[/HIGHLIGHT]
Die Klasse sieht nun aus wie folgt:
Hier wird also kein Namespace definiert. Wenn ich nun versuche, XML zu unmarshallen, dann bekomme ich folgende Exception:
Irgendwie scheint jaxb den default namespace der XSD nicht umzusetzen. Ich habe manuell versucht, diesen einzufügen:
Dies führt zu derselben UnmarshalException. Ich weiss leider nicht, was ich noch probieren könnte. Hat jemand eine idee wie der default namespace (xmlns="urn:com:test:interop") umgesetzt wird in meine JavaKlasse damit das unmarshallen funktioniert?
Hab leider nichts gefunden was mir weiterhelfen könnte bei google :-(
Thx im Voraus..
ich habe aus einem XSD File das wie folgt aussieht versucht, mit Jaxb Klassen zu generieren:
[HIGHLIGHT="xml"]<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:com:test:interop"
xmlns:binxml="urn:com:text:binxml" elementFormDefault="qualified"
targetNamespace="urn:com:test:interop" binxml:uuid="fd69d395-22b6-3da6-b596-129e5ad57766">
...
<xsd:element name="freetext" binxml:msgtype="FREETXT" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="timestamp" type="TimestampType"/>
<xsd:element name="subject">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="60"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="text" type="TextType"/>
</xsd:sequence>
<xsd:attribute name="version" type="VersionType"/>
<xsd:attribute name="dir" use="optional" type="TextDirectionType" default="rtl"/>
</xsd:complexType>
</xsd:element>
[/HIGHLIGHT]
Die Klasse sieht nun aus wie folgt:
Code:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"timestamp",
"subject",
"text"
})
@XmlRootElement(name = "freetext")
public class Freetext {
...
Hier wird also kein Namespace definiert. Wenn ich nun versuche, XML zu unmarshallen, dann bekomme ich folgende Exception:
Code:
javax.xml.bind.UnmarshalException: unexpected element (uri:"urn:com:test:interop", local:"freetext"). Expected elements are (none)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:556)
Irgendwie scheint jaxb den default namespace der XSD nicht umzusetzen. Ich habe manuell versucht, diesen einzufügen:
Code:
@XmlRootElement(name = "freetext", namespace = "urn:com:test:interop")
Dies führt zu derselben UnmarshalException. Ich weiss leider nicht, was ich noch probieren könnte. Hat jemand eine idee wie der default namespace (xmlns="urn:com:test:interop") umgesetzt wird in meine JavaKlasse damit das unmarshallen funktioniert?
Hab leider nichts gefunden was mir weiterhelfen könnte bei google :-(
Thx im Voraus..