- Beiträge: 17
XML Read Adapter
- sws_flowheater
- Autor
- Offline
- Benutzer
-
Weniger
Mehr
2 Wochen 5 Tage her #5425
von sws_flowheater
XML Read Adapter wurde erstellt von sws_flowheater
Guten Tag liebes FlowHeater-Team,
ich bin aktuell dabei einen Prozess für unser Belegwesen zu erstellen.
Dazu wird ein SOAP Webservice abgefragt, der aus dem ERP-System eine Liste mit Belegen ausgibt. Dies habe ich mit einem Powershell-Skript gelöst, welches die Daten in eine XML-Datei
schreibt.
Nun meine Frage: Diese XML ist wie folgt aufgebaut -
<S:Envelope>
<S:Body>
<ns2:get_liste_belege_response>
<beleg_seite_rectype>
<belege_tab>
<beleg_rectype>
value1
value2
...
<positionen>
<position_rectype>
value1
value2
...
die Anzahl von beleg_rectype und innerhalb der beleg_rectype die position_rectype können unterschiedlich groß sein (also dynamisch). Wie kann ich realisieren, dass alle Zeilen ausgelesen werden können. Zum Test würde ich das Ganze erstmal in einen Textfile schreiben, später werden die Daten in eine SQLServer-DB geschrieben.
Ich benötige Hilfe bei der Umsetzung. Die XML-Datei stelle ich Ihnen im Anhang zur Verfügung.
Vielen Dank!
Mit freundlichen Grüßen
Mattes Mundt
ich bin aktuell dabei einen Prozess für unser Belegwesen zu erstellen.
Dazu wird ein SOAP Webservice abgefragt, der aus dem ERP-System eine Liste mit Belegen ausgibt. Dies habe ich mit einem Powershell-Skript gelöst, welches die Daten in eine XML-Datei
schreibt.
Nun meine Frage: Diese XML ist wie folgt aufgebaut -
<S:Envelope>
<S:Body>
<ns2:get_liste_belege_response>
<beleg_seite_rectype>
<belege_tab>
<beleg_rectype>
value1
value2
...
<positionen>
<position_rectype>
value1
value2
...
die Anzahl von beleg_rectype und innerhalb der beleg_rectype die position_rectype können unterschiedlich groß sein (also dynamisch). Wie kann ich realisieren, dass alle Zeilen ausgelesen werden können. Zum Test würde ich das Ganze erstmal in einen Textfile schreiben, später werden die Daten in eine SQLServer-DB geschrieben.
Ich benötige Hilfe bei der Umsetzung. Die XML-Datei stelle ich Ihnen im Anhang zur Verfügung.
Vielen Dank!
Mit freundlichen Grüßen
Mattes Mundt
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
-
- Offline
- Administrator
-
Weniger
Mehr
- Beiträge: 2125
2 Wochen 5 Tage her #5427
von FlowHeater-Team
gruß
Robert Stark
FlowHeater-Team antwortete auf XML Read Adapter
Hallo Herr Mundt,
Sie müssen im XML Adapter über den XPath angeben, welche Elemente/Nodes Sie dynamisch aus der XML-Datei lesen möchten.
Hierzu einfach die Analysetiefe der XML-Nodes auf in Ihrem Fall 6 stellen und die XML-Datei analysieren lassen. Anschließend können Sie das betroffene Element/Node auswählen das die Positionen enthält.
In Ihrem Fall: //S:Body/ns2:get_liste_belege_response/beleg_seite_rectype/belege_tab/beleg_rectype/positionen/position_rectype
Was den Pfad bzw. XPath von oben nach unten beschreibt.
Wenn Sie jetzt auf Felder einlesen gehen, wird alles unterhalb von „position_rectype“ eingelesen. Der XML Adapter interpretiert dann jedes Element hier als eigenen Datensatz und liest auch dynamisch alle vorkommen aus.
Jetzt benötigen Sie mit Sicherheit noch einige Felder des dazugehörigen Beleges? Hierzu legen Sie sich manuell weitere Felder an, markieren dieses und klicken den Button „Wert von übergeordneten Knoten übernehmen“. Hier müssen Sie jetzt die Ebenen angeben die von hier aus nach oben gegangen werden soll, sowie welches Feld davon ausgelesen werden soll, siehe Screenshot.
Im Anhang finden Sie ein Beispiel dazu.
ACHTUNG: Leider erfolgt in Ihrer XML-Datei die Angabe der verwendeten Namespace Elemente nicht ausschließlich über das ROOT-Element. Das ist kein Fehler Ihrer Datei, sondern der FlowHeater kann das aktuell nicht verarbeiten. Im beigefügten Beispiel habe ich das manuell eingetragen kann aber aktuell nicht verändert oder eingesehen werden! Mit der nächsten Version wird das dann auch auf der READ-Seite editierbar sein.
Sie müssen im XML Adapter über den XPath angeben, welche Elemente/Nodes Sie dynamisch aus der XML-Datei lesen möchten.
Hierzu einfach die Analysetiefe der XML-Nodes auf in Ihrem Fall 6 stellen und die XML-Datei analysieren lassen. Anschließend können Sie das betroffene Element/Node auswählen das die Positionen enthält.
In Ihrem Fall: //S:Body/ns2:get_liste_belege_response/beleg_seite_rectype/belege_tab/beleg_rectype/positionen/position_rectype
Was den Pfad bzw. XPath von oben nach unten beschreibt.
Wenn Sie jetzt auf Felder einlesen gehen, wird alles unterhalb von „position_rectype“ eingelesen. Der XML Adapter interpretiert dann jedes Element hier als eigenen Datensatz und liest auch dynamisch alle vorkommen aus.
Jetzt benötigen Sie mit Sicherheit noch einige Felder des dazugehörigen Beleges? Hierzu legen Sie sich manuell weitere Felder an, markieren dieses und klicken den Button „Wert von übergeordneten Knoten übernehmen“. Hier müssen Sie jetzt die Ebenen angeben die von hier aus nach oben gegangen werden soll, sowie welches Feld davon ausgelesen werden soll, siehe Screenshot.
Im Anhang finden Sie ein Beispiel dazu.
ACHTUNG: Leider erfolgt in Ihrer XML-Datei die Angabe der verwendeten Namespace Elemente nicht ausschließlich über das ROOT-Element. Das ist kein Fehler Ihrer Datei, sondern der FlowHeater kann das aktuell nicht verarbeiten. Im beigefügten Beispiel habe ich das manuell eingetragen kann aber aktuell nicht verändert oder eingesehen werden! Mit der nächsten Version wird das dann auch auf der READ-Seite editierbar sein.
gruß
Robert Stark
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.131 Sekunden