Ich versuche, eine generische .xjb
Bindings-Datei zu erstellen, um konsistente Java-Klassengenerierung von WSDLs/XSDs über mehrere Projekte hinweg bereitzustellen. Wir generieren den Code über maven-jaxb2-plugin
(Made by @lexicore).Gibt es eine Möglichkeit, leere Knoten in der JAXB-Bindings-Datei zu ignorieren?
Das Problem liegt in der mehrere Projekte Teil. Wenn eine bestimmte Bindungs Anweisung nichts in der bereitgestellten XSD oder WSDL übereinstimmt, schlägt die Klasse Generation mit
XPath Auswertung von „
<some_xpath_expression>
“ Ergebnisse in leeren Zielknoten
Wie kann ich JAXB sagen zu ignorieren In diesen Fällen kann die Bindungsdatei unabhängig von den verwendeten Elementtypen in jedem Projekt ohne Feinabstimmung verwendet werden.
Hier ist eine (abgespeckte) Version das Problem präsentiert habe ich:
<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc">
<jxb:bindings schemaLocation="path/to/the/schema" node="/xs:schema">
<jxb:bindings multiple="true" node="//*[@type='xs:dateTime']">
<xjc:javaType name="java.time.LocalDateTime" adapter="a.b.c.LocalDateTimeAdapter" />
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
Wenn ich versuche, ohne dateTime
Element aus einem Schema Klassen zu generieren, wird es scheitern.
Das Ziel ist, am Ende etwas zu schaffen, das alle Projekte verschiedener Teams wiederverwenden könnten, ohne etwas anderes als das schemaLocation
zu ändern.
Es funktioniert, danke :) –