Analyse XML
Description
Section intitulée « Description »L’étape Analyse XML lit le XML contenu dans une colonne d’une table source et le transforme en lignes. Pour chaque ligne d’entrée, elle trouve chaque occurrence de l’élément que vous nommez et émet une ligne de sortie par correspondance, en projetant les attributs et les valeurs des balises enfants de cet élément sur des colonnes.
Elle est l’équivalent de l’outil XML Parse d’Alteryx. L’analyse s’exécute dans le moteur de workflow (les bases de données ne peuvent pas analyser le XML en SQL) : l’étape est donc native de PlaidCloud et n’a pas de solution de repli SQL.
Source et options
Section intitulée « Source et options »- Table source — la table dont les lignes contiennent le XML à analyser.
- Table de sortie — la table dans laquelle les lignes analysées sont écrites.
- Champ XML — la colonne qui contient le texte XML.
- Élément — l’élément dont chaque occurrence devient une ligne de sortie. Laissez ce champ vide pour analyser les éléments de premier niveau.
- Lire l’élément comme une expression XPath 1.0 — traite Élément comme une expression
XPath 1.0 plutôt que comme un nom, ce qui permet d’utiliser des prédicats, des tests d’attributs,
des caractères génériques et des fonctions telles que
count(),name()etcontains(). Un chemin relatif part de l’élément racine du document. Chaque élément que l’expression sélectionne devient une ligne de sortie. Un élément est analysé comme d’habitude. Tout autre élément, tel qu’un attribut ou le résultat decount(), remplace dans sa ligne la valeur du Champ XML par sa propre valeur ; lorsque les valeurs enfants sont activées, un attribut sélectionné reçoit à la place une colonne à son propre nom. Le XML est lu avec les entités et l’accès réseau désactivés, et un document mal formé fait échouer l’étape, sauf si vous ignorez ces lignes. - Émettre les valeurs des éléments enfants sous forme de colonnes — pour chaque élément correspondant, ajoute une colonne par balise enfant contenant la valeur de cet enfant.
- Emit each child’s outer XML — ajoute en plus une colonne
<tag>_OuterXMLcontenant le XML sérialisé de chaque enfant (utile lorsqu’un enfant contient lui-même du XML imbriqué que vous analysez dans une étape ultérieure). - Ignorer les lignes dont le XML ne peut pas être analysé — ignore une ligne d’entrée dont la valeur n’est pas du XML bien formé au lieu de faire échouer l’étape.
Convertir du XML en JSON
Section intitulée « Convertir du XML en JSON »Sortie détermine ce que devient chaque document :
- Colonnes (par défaut) — les valeurs analysées dans des colonnes, comme défini ci-dessous.
- Élément en JSON — chaque document du Champ XML est remplacé par son texte JSON, avec une ligne de sortie par ligne d’entrée. Les attributs deviennent des champs
@, le texte propre d’un élément devient#textet les enfants répétés deviennent des tableaux. Les options Élément, valeur enfant, XML externe et XPath sont désactivées ; Ignorer les lignes dont le XML ne peut pas être analysé reste applicable.
Pour donner des types aux valeurs du JSON, définissez Detect Value Types From First N Documents sur un nombre de documents. Le JSON contient alors les éléments enfants de la racine, chacun typé d’après les premiers documents de ce nombre comme un entier, un nombre décimal, un booléen, une date, un horodatage ou du texte, élargi pour convenir à chacun de ces documents, comme le déduit schema_of_xml de Spark. Un champ que ces documents n’ont pas est omis, et une valeur qui ne se lit pas comme son type vaut null. Avec 0, toutes les valeurs restent du texte.
Colonnes XPath
Section intitulée « Colonnes XPath »La section Requêtes XPath fonctionne comme le nœud XPath de KNIME. Ajoutez des lignes à Requêtes (xpaths) : au lieu d’une ligne par élément, chaque ligne d’entrée est copiée et reçoit une colonne par requête XPath 1.0 portant sur le XML du Champ XML. Les colonnes transmises conservent leurs types. Chaque requête comporte une Colonne (target), une expression XPath 1.0 (path), un Résultat (kind) et Plusieurs résultats (multi) :
- Résultat — le type de valeur :
String,Integer,Double,Number,Boolean,NodeouNodeSet. - Plusieurs résultats — ce qu’écrit une requête qui sélectionne plusieurs éléments :
SingleCell(le premier),CollectionCell(une valeur de liste),MultipleColumns(une colonne chacun),UngroupToRows(une ligne chacun) ouJoinedText(le texte des éléments joint par le Séparateur d’éléments (separator), un espace par défaut ; Parties de l’élément (XPaths) (parts) prend à la place le texte de chaque élément à partir de la première correspondance de ces chemins relatifs, joints par le Séparateur de parties (part_separator)). - Vide signifie manquant (
empty_missing) — une requête qui ne sélectionne rien donne une cellule manquante.
Ces champs de la section s’appliquent avec les requêtes :
- Espaces de noms (
xpath_namespaces) — les paires{prefix: namespace URI}utilisées par les requêtes. Préfixe d’espace de noms de la racine (xpath_root_prefix) associe à ce préfixe l’espace de noms par défaut de la racine du document. - Omettre le champ XML de la sortie (
xpath_remove_source) — omet le Champ XML de la sortie. - Une requête booléenne fausse donne une cellule manquante (
xpath_missing_on_false) — une requêteBooleanfausse donne une cellule manquante. Une requête de collection qui ne sélectionne rien donne une cellule manquante (xpath_empty_set_missing) — une requêteCollectionCellqui ne sélectionne rien donne une cellule manquante. - Lire le champ XML comme une page HTML (
xpath_html) — lit le champ comme une page HTML, réparée en arbre XML sous une racinehtml. - Colonne du numéro d’élément de « une ligne chacun » (
xpath_ungroup_index) — avec une requêteUngroupToRows, écrit dans cette colonne le numéro d’élément de chaque ligne, à partir de 1. « Une ligne chacun » sans résultat (xpath_ungroup_empty) détermine ce que donne un document dans lequel la requête ne sélectionne rien : une ligne avec la valeur manquante (row, la valeur par défaut), aucune ligne (drop) ou une étape en échec (fail). - Écrire uniquement la table que forment les éléments de la première requête (
xpath_table) — écrit uniquement la table que forment les éléments de la première requête, une ligne par élément, par exemple chaquetrd’une table HTML, avec ses éléments enfants comme cellules de texte. Une première ligne de cellules d’en-tête nomme les colonnes ; sinon, elles se nommentColumn <n>.
Colonnes
Section intitulée « Colonnes »L’onglet Colonnes est le mappeur de données standard pour les colonnes transmises, c’est-à-dire les colonnes sources que vous voulez reporter sur chaque ligne de sortie.
Les colonnes que découvre l’analyse (les attributs et les balises enfants d’un élément) sont
ajoutées automatiquement à la sortie ; vous ne les listez pas ici. Lorsqu’un nom extrait
entre en collision avec une colonne transmise (ou une colonne extraite plus tôt), il est
dédoublonné par l’ajout d’un numéro (id → id2 → id3), comme dans Alteryx.
Remarques
Section intitulée « Remarques »Un enchaînement d’étapes Analyse XML fonctionne comme celui d’Alteryx : toutes les colonnes entrantes sont transmises, de sorte qu’une étape ultérieure peut analyser de nouveau une colonne produite par une étape antérieure et référencer les colonnes extraites par cette étape antérieure.