XML Lesen und Schreiben

REST-Interface

Lesen und Schreiben von XML-Daten

01.10.2012

Durch die steigende Bedeutung von geographischen Online-Diensten, wird es immer wichtiger webfähige Datenformate effizient bearbeiten zu können. Die meisten Webformate basieren dabei auf XML-Technologie. Da es sich bei XML-Daten aber eher um einen allgemeingültigen Standard für die Beschreibung von Daten als um ein tatsächliches Datenformat handelt, bedarf es spezieller Kenntnisse um solche Daten mit FME bearbeiten zu können. In diesem Artikel sollen kurz die wichtigsten Schritte für das Einlesen, Aktualisieren und Schreiben von XML-Daten beschrieben werden.

 

READ: Während man in früheren FME-Versionen noch auf den XMLFragmenter zugreifen musste, um XML-Daten zu lesen (XML Source Type) und die Objekt-Tags zu extrahieren (Match Expressions), so soll es zukünftig möglich sein jede XML-Struktur mithilfe des XML-Readers einzulesen und in FME-Features umzuwandeln. Im Parameter „Elements to Match“ werden die XML-Tags aufgezählt, die in Features aufgespalten werden sollen. Stellt man noch den Parameter „Flatten Options“ auf „Enable“, so werden die Unterelemente der aufgespaltenen Objekte als deren Attribute dargestellt. Alternativ dazu kann dem Reader auch ein xfmap-File mitgegeben werden.

 

UPDATE: Zum Aktualisieren von bestehenden XML-Dokumenten eignet sich am besten der Transformer XML-Updater. Dabei wird die XML-Datei z.B. mit einem TXT-Reader eingelesen und deren Inhalt zeilenweise (text_line_data) als Attribut an den Transformer übergeben.  Im Frame „Updates“ des Transformer-Dialogs werden anschließend die Update-Optionen eingegeben. Die betreffenden XML-Tags werden mit der  Abfragesprache XPath adressiert. Die eigentliche Aktualisierung erfolgt über XQuery und bezieht sich in der Regel auf Attributwerte (fme:get-attribute(„ATTRIBUT“) der Referenzdatei (z.B. CSV).

 

WRITE: Um XML-Daten auf einfache Weise zu erzeugen, greift man am besten auf einen TXT-Writer und den Transformer XMLTemplater zu. In dessen Dialogfenster erstellt man zunächst das Wurzel-Element (ROOT Template). Von dort greift man dann mit XQuery (fme:process-features("TEMPLATE")) auf weitere Sub Templates zu, die wiederum über XQuery die gewünschte XML-Struktur aus den Eingangsdaten generieren. Der gesamte XML-Inhalt wandert dann in ein Ergebnis-Attribut und kann bereits in die Text-Datei geschrieben werden. Aus Gründen der Qualitätssteigerung der erzeugten XML-Dokumente, sollte der XML-Inhalt jedoch zunächst mit dem Transformer XMLFormatter auf geeignete Weise (z.B. Pretty-Print XML) formatiert werden.

Top