Hallo zusammen,
Ich komme derzeit nicht weiter.
Wir haben via JAXB die allgemeine XMLSchema.xsd (von W3C) verwendet, um daraus Java-Klassen zu erstellen. Nun wollen wir bestimmte xsd-Schemata einlesen, um darauf Elemente weiter zu verarbeiten. Diese Schemata bestehen jeweils aus drei Dateien, die zusammenhängen.
Das geht wie folgt.
Die erste Datei (message.xsd) beschreibt den allgemeinen Aufbau einer Nachricht. Diese kann beinhalten DataCollections und DataFields. Für jedes dieser Elemente gibt es wieder eine eigene XSD-Datei, welche den Aufbau der jeweiligen Elemente weiter beschreibt.
Die message.xsd verweist hier also auf weitere extensions, die in den übrigen Files weiter spezifiziert werden.
Ich habe nun mit dem nachfolgenden Codeblock probiert, diese xsd-Dateien einzulesen und zu verarbeiten. Leider liest JAXB mir allerdings immer nur die erste Datei aus und lässt den konkreten Inhalt der "unteren" Files aus. Kann ich JAXB irgendwie sagen, dass er auch die untergeordneten Dateien berücksichtigen soll?
Ich komme derzeit nicht weiter.
Wir haben via JAXB die allgemeine XMLSchema.xsd (von W3C) verwendet, um daraus Java-Klassen zu erstellen. Nun wollen wir bestimmte xsd-Schemata einlesen, um darauf Elemente weiter zu verarbeiten. Diese Schemata bestehen jeweils aus drei Dateien, die zusammenhängen.
Das geht wie folgt.
Die erste Datei (message.xsd) beschreibt den allgemeinen Aufbau einer Nachricht. Diese kann beinhalten DataCollections und DataFields. Für jedes dieser Elemente gibt es wieder eine eigene XSD-Datei, welche den Aufbau der jeweiligen Elemente weiter beschreibt.
Die message.xsd verweist hier also auf weitere extensions, die in den übrigen Files weiter spezifiziert werden.
Ich habe nun mit dem nachfolgenden Codeblock probiert, diese xsd-Dateien einzulesen und zu verarbeiten. Leider liest JAXB mir allerdings immer nur die erste Datei aus und lässt den konkreten Inhalt der "unteren" Files aus. Kann ich JAXB irgendwie sagen, dass er auch die untergeordneten Dateien berücksichtigen soll?
Java:
JAXBContext jaxbContext = JAXBContext.newInstance("path.to.generated.classes");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Schema unmarshalledSchema = (Schema) unmarshaller.unmarshal(new File("X:\\path\\to\\message.xsd"));
List<OpenAttrs> simpleTypeOrComplexTypeOrGroup = unmarshalledSchema.getSimpleTypeOrComplexTypeOrGroup();
simpleTypeOrComplexTypeOrGroup.forEach(XsdReaderUtility::handleTopElement);