Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: XML Quellstruktur mit mehreren Elementen

XML Quellstruktur mit mehreren Elementen 2 Monate 1 Woche her #2858

  • Scheunemann Manfred
  • Scheunemann Manfreds Avatar
  • Offline
  • New Member
  • Beiträge: 13
Guten Tag,

ich habe folgenden Fall im XML

<ARTICLE>
<SUPPLIER_AID>0815-1543</SUPPLIER_AID>
<ARTICLE_DETAILS>
<DESCRIPTION_SHORT>Artikelbeschreibung Kurz</DESCRIPTION_SHORT>
<EAN>1234567890123</EAN>
<ARTICLE_FEATURES>
<REFERENCE_FEATURE_SYSTEM_NAME>PROFICLASS-5.0</REFERENCE_FEATURE_SYSTEM_NAME>
<REFERENCE_FEATURE_GROUP_ID>AAA334c003</REFERENCE_FEATURE_GROUP_ID>
<FEATURE>
<FNAME>AAB996f001</FNAME>
<FVALUE>AAC713v001</FVALUE>
<FDESCR>Materialzusammensetzung</FDESCR>
<FVALUE_DETAILS>Kunstfaser</FVALUE_DETAILS>
</FEATURE>
<FEATURE>
<FNAME>AAB748f001</FNAME>
<FVALUE>Wert des zweiten Features</FVALUE>
<FUNIT>g/m²</FUNIT>
<FDESCR>Materialgewicht</FDESCR>
</FEATURE>
</ARTICLE_FEATURES>
</ARTICLE>

Es ist nicht immer so, dass ein <ARTICLE> genau zwei <FEATURE> hat. Er kann zwischen Null und 100 <FEATURE> haben (theoretisch). In einer ganzen XML sind dann auch natürlich viele <ARTICLE> und nicht nur einer.

Die Ausgabe soll so sein, dass in Excel in der ersten Spalte die Information aus <SUPPLIER_AID> steht. Damit kann ich wissen, zu welchem Artikel das Feature jetzt kommt. Und in den vier Folgespalten dann <FNAME>, <FVALUE>, <FUNIT> und <FDESCR>.

Beispielausgabe:
ArtikelAttributsnummerWertEinheitAttributsbeschreibung
0815-1543AAB996f001AAC713v001Materialzusammensetzung
0815-1543AAB748f001Wert des zweiten Featuresg/m²Materialgewicht

Aktuell bekommen wir immer das <FEATURE>, das wir gemappt haben. Also bei zwei Attributen können wir das erste Mappen und bekommen dann auch im Ergebnis von jedem <ARTICLE> nur das erste Feature. Mappen wir das zweite, dann bekommen wir immer das zweite und so weiter. Aktuell behelfen wir uns, indem wir 7 Mappings haben. Also jeweils ein Mapping für das erste <FEATURE>, ein Mapping für das zweite <FEATURE> und so weiter. Die 7 Ergebnisse schmeißen wir dann zusammen und haben es. Aber ich glaube, so ist es nicht gedacht.
Was machen wir falsch?

Viele Grüße und schon mal vorab vielen Dank!

Manfred Scheunemann
Der Administrator hat öffentliche Schreibrechte deaktiviert.

XML Quellstruktur mit mehreren Elementen 2 Monate 1 Woche her #2860

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Hallo Herr Scheunemann,

das ist machbar, aber es könnte eine Fleißarbeit werden :unsure: Das Problem ist derzeit, dass der XML Adapter noch keine dynamischen XML (Unter)Strukturen/Knoten verarbeiten kann. In Ihrem Fall die XML Knoten ARTICLE_FEATURES 0 bis theoretisch 100.

Die Artikel Knoten können problemlos verarbeitet werden. Wenn Sie nun die Features verarbeiten möchten, müssen Sie derzeit im XML Adapter auf der READ Seite so viele Features Knoten anlegen wie Sie maximal verarbeiten möchten. Beim Auslesen der XML Struktur werden aus dem ersten Artikel Record alle verfügbaren Feature Konten automatisch in der Definition angelegt.

Ich habe Ihnen im Anhang dazu mal ein Beispiel aufbauend auf Ihre XML Datei erstellt. Hier werden 2 Artikel (dynamisch) mit jeweils 3 Features (statisch) ausgelesen. Das Problem ist jetzt, dass der FlowHeater diese Struktur pro Artikel als eine Zeile bzw. Datensatz verarbeitet. Damit die einzelnen Features als separate Zeilen/Sätze exportiert werden können ist im Anschluss ein weiterer Zwischenschritt notwendig.
Hinweis: Beim Lesen der XML Daten ignoriert der FlowHeater automatisch nicht vorhandenen Feature XML Unterknoten!

Zum Vorgehen)
Im ersten Step wird mittels des XML Adapters pro Artikel eine Zeile in eine CSV Datei Exportiert. In der letzten CSV Spalte landen alle Features mit Trennzeichen getrennt. Jedes Feature wird mit dem Ternnzeichen „|“ getrennt abgelegt. Die einzelnen Werte jedes Features werden hier mit dem Trennzeichen „#“ getrennt hinterlegt.

z.B. Feature1_Name#Feature1_Value|Feature2_Name#Feature2_Value|…

Hinweis: Die Werte werden mittels mehrerer String Append Heater zu einer Spalte zusammengefasst

Im zweiten Step wird diese CSV Datei dann so aufbereitet, dass die pro Feature Record eine separate Zeile in eine CSV Datei geschrieben wird. Um das zu erreichen wird der GroupOut Heater benötigt, sowie pro Feature Wert ein .NET Script Heater mit einem speziell angepassten Skript.
Der GroupOut Heater legt im Prinzip x identische Kopien der gerade aktiven CSV Zeile an, die dann nacheinander verarbeitet werden. Hier müssen Sie genau so viele Kopien anlegen wie Feature XML Konten in der ersten Definition angegeben wurden. Der AutoID Heater zählt nun welche Kopie aktuell bearbeitet wird. Die .NET Script Heater benötigen diesen Wert um aus der CSV Spalten mit allen Features das aktuell benötigte Feature zu extrahieren und der entsprechend Spalte zuzuweisen. Im Beispiel wurden im Skript Kommentare hinzugefügt um hier evtl. Änderungen vornehmen zu können.

Dieses Vorgehen müsste so jetzt pro weiteren Feature Knoten nach dem gleichen Schema angepasst werden

PS: Das von Ihnen gepostete XML Beispiel wies Fehler auf, das habe ich im Beispiel korrigiert.


Dateianhang:

Dateiname: xml-verarbeitung.zip
Dateigröße:7 KB
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 2 Monate 1 Woche her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.079 Sekunden