Zum Inhalt springen

Der Schritt XML parsen liest das in einer Spalte einer Quelltabelle gespeicherte XML und wandelt es in Zeilen um. Für jede Eingabezeile findet er jedes Vorkommen des von Ihnen benannten Elements und gibt pro Treffer eine Ausgabezeile aus, wobei die Attribute und die Werte der untergeordneten Tags dieses Elements auf Spalten übertragen werden.

Er entspricht dem Alteryx-Tool XML Parse. Das Parsen läuft in der Workflow-Engine (Datenbanken können XML nicht in SQL parsen), daher ist der Schritt nativ in PlaidCloud und hat keinen SQL-Fallback.

XML-Dokument<order id=“1”><name>Ann</name><item>a</item></order>parsenflache Spaltenorder_idnameitem1Anna
Table XML Parse wandelt ein XML-Dokument in einfache Zeilen und Spalten um — Elemente und Attribute werden zu Feldern, die nachgelagerte Schritte direkt verwenden können.
  • Quelltabelle — die Tabelle, deren Zeilen das zu parsende XML enthalten.
  • Ausgabetabelle — die Tabelle, in die die geparsten Zeilen geschrieben werden.
  • XML-Feld — die Spalte mit dem XML-Text.
  • Element — das Element, dessen jedes Vorkommen zu einer Ausgabezeile wird. Lassen Sie es leer, um die Elemente der obersten Ebene zu parsen.
  • Das Element als XPath-1.0-Ausdruck lesen — behandelt Element als XPath-1.0-Ausdruck statt als Namen, sodass er Prädikate, Attributtests, Platzhalter und Funktionen wie count(), name() und contains() verwenden kann. Ein relativer Pfad beginnt am Wurzelelement des Dokuments. Jedes vom Ausdruck ausgewählte Element wird zu einer Ausgabezeile. Ein Element wird wie üblich geparst. Jedes andere Element, etwa ein Attribut oder das Ergebnis von count(), ersetzt in seiner Zeile den Wert von XML-Feld durch seinen Wert; bei aktivierten untergeordneten Werten erhält ein ausgewähltes Attribut stattdessen eine Spalte mit seinem eigenen Namen. Das XML wird mit deaktivierten Entitäten und deaktiviertem Netzwerkzugriff gelesen, und ein Dokument, das nicht wohlgeformt ist, lässt den Schritt fehlschlagen, es sei denn, Sie überspringen solche Zeilen.
  • Werte untergeordneter Elemente als Spalten ausgeben — fügt für jedes gefundene Element eine Spalte pro untergeordnetem Tag hinzu, die den Wert dieses untergeordneten Elements enthält.
  • Emit each child’s outer XML — fügt zusätzlich eine Spalte <tag>_OuterXML hinzu, die das serialisierte XML jedes untergeordneten Elements enthält (nützlich, wenn ein untergeordnetes Element selbst weiteres XML verschachtelt, das Sie in einem späteren Schritt parsen).
  • Zeilen überspringen, deren XML nicht geparst werden kann — verwirft eine Eingabezeile, deren Wert kein wohlgeformtes XML ist, statt den Schritt fehlschlagen zu lassen.

Ausgabe legt fest, was aus jedem Dokument wird:

  • Spalten (Standard) — die geparsten Werte in Spalten, wie unten festgelegt.
  • Element als JSON — jedes Dokument im XML-Feld wird durch seinen JSON-Text ersetzt, eine Ausgabezeile pro Eingabezeile. Attribute werden zu @-Feldern, der eigene Text eines Elements wird zu #text, und wiederholte untergeordnete Elemente werden zu Arrays. Die Optionen Element, Werte untergeordneter Elemente, äußeres XML und XPath sind deaktiviert; Zeilen überspringen, deren XML nicht geparst werden kann gilt weiterhin.

Um dem JSON typisierte Werte zu geben, setzen Sie Detect Value Types From First N Documents auf eine Anzahl von Dokumenten. Das JSON enthält dann die untergeordneten Elemente der Wurzel, jeweils anhand der ersten so vielen Dokumente als ganze Zahl, Dezimalzahl, boolescher Wert, Datum, Zeitstempel oder Text typisiert und so erweitert, dass es zu jedem dieser Dokumente passt, wie es schema_of_xml von Spark ableitet. Ein Feld, das diese Dokumente nicht haben, wird weggelassen, und ein Wert, der sich nicht als sein Typ lesen lässt, ist null. Bei 0 bleibt jeder Wert Text.

Der Abschnitt XPath-Abfragen funktioniert wie der XPath-Knoten von KNIME. Fügen Sie Zeilen zu Abfragen (xpaths) hinzu: Statt einer Zeile pro Element wird jede Eingabezeile kopiert und erhält pro XPath-1.0-Abfrage über das XML im XML-Feld eine Spalte. Die durchgereichten Spalten behalten ihre Typen. Jede Abfrage hat eine Spalte (target), einen XPath 1.0-Ausdruck (path), ein Ergebnis (kind) und Mehrere Ergebnisse (multi):

  • Ergebnis — der Werttyp: String, Integer, Double, Number, Boolean, Node oder NodeSet.
  • Mehrere Ergebnisse — was eine Abfrage schreibt, die mehrere Elemente auswählt: SingleCell (das erste), CollectionCell (ein Listenwert), MultipleColumns (je eine Spalte), UngroupToRows (je eine Zeile) oder JoinedText (der Text der Elemente, verbunden durch das Elementtrennzeichen (separator), standardmäßig ein Leerzeichen; Elementteile (XPaths) (parts) entnimmt den Text jedes Elements stattdessen dem ersten Treffer dieser relativen Pfade, verbunden durch das Teiletrennzeichen (part_separator)).
  • Leer gilt als fehlend (empty_missing) — eine Abfrage, die nichts auswählt, liefert eine fehlende Zelle.

Diese Felder des Abschnitts gelten für Abfragen:

  • Namespaces (xpath_namespaces) — die Paare {prefix: namespace URI}, die die Abfragen verwenden. Namespace-Präfix der Wurzel (xpath_root_prefix) bindet den Standard-Namespace der Dokumentwurzel an dieses Präfix.
  • Das XML-Feld in der Ausgabe weglassen (xpath_remove_source) — lässt das XML-Feld in der Ausgabe weg.
  • Eine boolesche Abfrage, die falsch ergibt, liefert eine fehlende Zelle (xpath_missing_on_false) — eine Boolean-Abfrage, die falsch ergibt, liefert eine fehlende Zelle. Eine Sammlungsabfrage, die nichts auswählt, liefert eine fehlende Zelle (xpath_empty_set_missing) — eine CollectionCell-Abfrage, die nichts auswählt, liefert eine fehlende Zelle.
  • Das XML-Feld als HTML-Seite lesen (xpath_html) — liest das Feld als HTML-Seite, die unter einer html-Wurzel zu einem XML-Baum repariert wird.
  • Spalte der Elementnummer bei „Je eine Zeile“ (xpath_ungroup_index) — schreibt bei einer UngroupToRows-Abfrage die 1-basierte Elementnummer jeder Zeile in diese Spalte. „Je eine Zeile“ ohne Ergebnis (xpath_ungroup_empty) legt fest, was für ein Dokument entsteht, in dem die Abfrage nichts auswählt: eine Zeile mit fehlendem Wert (row, der Standard), keine Zeile (drop) oder ein fehlgeschlagener Schritt (fail).
  • Nur die Tabelle schreiben, die die Elemente der ersten Abfrage bilden (xpath_table) — schreibt nur die Tabelle, die die Elemente der ersten Abfrage bilden, eine Zeile pro Element, etwa jedes tr einer HTML-Tabelle, mit ihren untergeordneten Elementen als Textzellen. Eine erste Zeile mit Kopfzellen benennt die Spalten; andernfalls heißen sie Column <n>.

Die Registerkarte Spalten ist der Standard-Data-Mapper für die durchgereichten Spalten — die Quellspalten, die auf jede Ausgabezeile übernommen werden sollen.

Die Spalten, die das Parsen ermittelt — die Attribute und untergeordneten Tags eines Elements —, werden automatisch zur Ausgabe hinzugefügt; Sie müssen sie hier nicht auflisten. Kollidiert ein extrahierter Name mit einer durchgereichten Spalte (oder einer früher extrahierten), wird er durch Anhängen einer Zahl eindeutig gemacht (id → id2 → id3), wie in Alteryx.

Eine Kette von Schritten vom Typ XML parsen funktioniert wie in Alteryx: Jede eingehende Spalte wird durchgereicht, sodass ein späterer Schritt eine Spalte, die ein früherer Schritt erzeugt hat, erneut parsen und auf die extrahierten Spalten des früheren Schritts verweisen kann.