Ich versuche Java-Klassen von XSDs mit JAXB zu generieren.JAXB: Paket.Paket. <Type> ist bereits in package.package definiert. <Type>. <Type>
Die XSDs sind offizielle xsds in meiner Firma, also kann ich sie nicht nur für mein Projekt ändern. Nachdem Hunderte von versuchen und Suche auf dieser Seite habe ich mich entschieden, die Frage direkt zu stellen.
Ich habe dies in meinem XSD:
<xs:element name="Line" minOccurs="0" maxOccurs="999">
<xs:complexType>
<xs:sequence>
<xs:element name="Line" minOccurs="0" maxOccurs="999">
<xs:complexType>
<xs:attribute name="reference" type="xs:toto" use="optional">
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="reference" type="xs:toto" use="optional">
</xs:attribute>
</xs:complexType>
</xs:element>
Es in der Ausgabe führen: package.Index.Line bereits in package.Index definiert ist
Nachdem bei dem generierten Code suchen kann ich sehen Sie, dass wir eine statische iner Class Line in eine andere statisch innere Klasse Line (unter einem anderen Index) haben
Ich bekomme Fehler auf der Linie (oben) Die verschachtelte Zeile kann einen umschließenden Typ nicht verbergen
Wenn der Name geändert wird (entweder auf xsd oder auf Java-Klasse nach der Generierung), habe ich kein Problem mehr.
Ich habe versucht, eine Bindungsdatei zu erstellen:
<jaxb:bindings schemaLocation="file:../path/myschema.xsd" node="//xs:element[@name='Index']">
<jaxb:bindings node=".//xs:element[@name='Line']" multiple="true">
<jaxb:property name="Lines"/>
</jaxb:bindings>
</jaxb:bindings>
ich das gleiche Problem haben ... Denn in der Tat unter Index I zwei Knoten Linie haben, damit ich mit diesem versuchen:
<jaxb:bindings schemaLocation="file:path/myxsd.xsd" node="//xs:element[@name='Index']/xs:element[@name='Line']">
<jaxb:bindings node="//xs:element[@name='Line']" multiple="true">
<jaxb:property name="Lines"/>
</jaxb:bindings>
</jaxb:bindings>
oder
<jaxb:bindings schemaLocation="file:path/myxsd.xsd" node="//xs:element[@name='Index']">
<jaxb:bindings node="//xs:element[@name='Line']/xs:element[@name='Line']" multiple="true">
<jaxb:property name="Lines"/>
</jaxb:bindings>
</jaxb:bindings>
Aber ich erhalte eine Generation Ausgabe: com.sun.istack.SAXParseException2: XPa Die Auswertung von "// xs: element [@ name = 'Index']/xs: element [@ name = 'Linie']" führt zu einem leeren Zielknoten
Ich bin komplett verloren. Ich esse den ganzen Tag nutella lange die Traurigkeit zu kompensieren Ich fühle mich T_T
Wenn Sie Vorschläge haben;)
Vielen Dank im Voraus
Geoffrey
Zeile ist innerhalb 'xs: complexType'. nicht unter 'xs: element' Linie – ulab
Also wie willst du das machen? Dies funktioniert nicht ' \t \t \t \t \t \t \t jaxb: Bindings> \t jaxb: Bindings> ' –
Geoffrey
siehe meine Antwort unten. – ulab