Ich bin neu bei Apache Camel und mocke Tests, also hier geht es ...
Ich habe ein XML ohne XSD-Schema, auf das ich keinen Einfluss habe. Untergeordnete Elemente dieses XML enthalten Daten, die ich an meinen Geschäftspojo binden möchte. Dieser POJO (WeatherCurrent) ist bereits JPA-kommentiert und ich dachte daran, JAXB Annotation hinzuzufügen, damit die geteilte XML meinem POJO zugeordnet werden konnte.
Da dieses XML ein root-Element hat und ich nur seine childs (metData) haben möchte, habe ich ein Problem damit, mein POJO mit Anmerkungen zu versehen, da ich @XmlRootElement nicht verwenden kann.
Dies wird teilweise hier beschrieben: Ссылка bei Streaming von großen XML-Nutzdaten mit Tokenizer-Sprache Kapitel . Mein POJO ist wie order xml Element in diesem Beispiel. Ich brauche nur ein paar Elemente aus dem Element metData xml, um sie meinen POJO-Feldern zuzuordnen.
In Ссылка gibt es auch ein Kapitel Teil-Marshalling / -Unmarshalling , aber es gibt kein JAVA DSL-Beispiel (ein muss), noch, wie man das Pojo annotiert, um mit XML-Fragmenten zu arbeiten.
Bisher habe ich diesen Testcode:
%Vor%Das XML (observation_si_latest.xml) kommt in dieser Form:
%Vor%Ich habe der Kürze halber viele Elemente der metData-Elemente weggelassen. Ich möchte (unter anderem) domain_title zu meinem JPA-kommentierten POJO-Stationsfeld zuordnen und später die Datenbank speichern, hoffentlich alles auf einer intelligenten und kurzen Camel-Route.
Der POJO (noch keine JAXB-Anmerkungen):
%Vor%Ich habe auch viele Felder und Methoden weggelassen.
Die Idee ist also, den Wert von * domain_title * dem Feld Station von WeatherCurrent POJO zuzuordnen und dies für jedes metData-Element zu tun und eine Liste von WeatherCurrent-Objekten in der Datenbank zu speichern.
Wir beraten Sie gerne, wie Sie dies am besten umsetzen können.
Es stellte sich heraus, dass ich eine falsche Annahme hatte, dass ich das @ XmlRootElement nicht verwenden konnte. Die Route und der Test bestanden mit Erfolg, nachdem ich das POJO mit Anmerkungen versehen und die jaxb.index-Datei hinzugefügt habe. Wird die Lösung später oder morgen posten, da ich jetzt in einem Zug bin.
Stunden später ...
Die JAXB-Anmerkungen auf dem POJO (über JPA-Einträgen):
%Vor%hat mir erlaubt, eine Liste von WeatherCurrent Exchage-Objekten zu erhalten. Nur für den Test habe ich jeden zu meinem EchoBean geroutet, um eine Eigenschaft auszudrucken:
%Vor%und EchoBean:
%Vor%gibt die Namen der Wetterstationen mit der log Camel-Komponente aus.
Die einzige undokumentierte Sache, die mich störte, war, dass ich diese jaxb.index-Datei als nächste Wetter-Java-Quelle bereitstellen musste, obwohl sie Ссылка es sagt eindeutig, dass jaxb Kontext mit
initialisiert wird %Vor%Geben Sie in der pom.xml die folgende Abhängigkeit ein -
%Vor%Als Nächstes kommentieren Sie die pojo-Klasse mit @XmlRootElement (name="Mitarbeiter")
%Vor%Schließlich in der RouteBuilder-Klasse definieren Sie das Jaxb-Datenformat und verwenden Sie es in der Route.
%Vor%Quellcode und weitere Details - Apache Camel - Marshalling / Unmarshalling XML / JSON-Daten
Tags und Links java jpa xml apache-camel jaxb