Connecteur XML

Le connecteur XML est utilisé pour les fichiers XML (.xml).

Ce connecteur crée des enregistrements à partir d’une structure XML arbitraire en convertissant tous les éléments à une profondeur spécifique (éventuellement filtrés par tag) en un ensemble d’enregistrements. Pour chaque élément converti en enregistrement, les attributs, les tags encadrés et le contenu sont convertis en champs. Les données complexes présentes dans les champs sont, elles, converties en une représentation JSON regroupant les attributs et le contenu.

Le connecteur XML peut également lire des fichiers RDF (.rdf).

Création

Consultez comment collecter un fichier.

Configuration

Nom

Description

Utilisation

Profondeur des éléments extraits

Profondeur des tags qui doivent être convertis en enregistrements.

Indiquez la profondeur du tag répété dans la zone de texte (par exemple, 3).

Extraire le nom de fichier

Crée une colonne avec le nom du fichier source.

Par défaut, la case n’est pas cochée. Cochez la case pour extraire le nom de fichier dans une autre colonne.

Nombre de parents desquels récupérer les attributs

Si les tags encadrants contiennent des attributs pertinents, utilisez cette option pour les ajouter dans les enregistrements.

Indiquez le nombre de tags parents auprès desquels obtenir des attributs (par exemple, 2).

Balises des éléments extraits

Si des tags non pertinents se trouvent à la même profondeur que les éléments extraits, utilisez cette option pour filtrer uniquement les tags pertinents.

Indiquez le tag à extraire (par exemple, item). Si le champ est laissé vide, tous les tags à la profondeur spécifiée sont convertis en enregistrements.

Spécifications techniques

Création du champ

La stratégie relative à la création de champs à partir d’un élément est définie dans l’exemple ci-dessous.

1
2
3
4
5
6
7
8
<rows>
  <data attribute="attribute value" other_attribute="other attribute value">
    <indicator>GDP per capita</indicator>
    <country>Andean Region</country>
    <decimal>0</decimal>
  </data>
  <data attribute="2nd data tag">Text only</data>
</rows>

attribut

autre_attribut

indicateur

pays

décimal

contenu

valeur d’attribut

autre valeur d’attribut

PIB par habitant

Région des Andes

0  

2e tag de données

       

Texte uniquement

Représentation JSON

Les données complexes à l’intérieur des champs sont converties en représentation JSON conformément à l’exemple ci-dessous.

1
2
3
4
5
6
7
8
9
<mydocument has="an attribute">
  <and>
    <many>elements</many>
    <many>more elements</many>
  </and>
  <plus a="complex">
    element as well
  </plus>
</mydocument>
{
    "mydocument": {
        "@has": "an attribute",
        "and": {
            "many": [
                "elements",
                "more elements"
            ]
        },
        "plus": {
            "@a": "complex",
            "#text": "element as well"
        }
    }
}

Exemples

Exemple 1 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<wb:rows xmlns:wb="http://www.worldbank.org">
  <wb:data>
    <wb:indicator id="6.0.GDPpc">GDP per capita (2005 USD)</wb:indicator>
    <wb:country id="L5">Andean Region</wb:country>
    <wb:date>2012</wb:date>
    <wb:value>10561.668936515</wb:value>
    <wb:decimal>0</wb:decimal>
  </wb:data>
  <wb:data>
    <wb:indicator id="6.0.GDPpc">GDP per capita (2005 USD)</wb:indicator>
    <wb:country id="L5">Andean Region</wb:country>
    <wb:date>2011</wb:date>
    <wb:value>10215.3319157514</wb:value>
    <wb:decimal>0</wb:decimal>
  </wb:data>
  <wb:data>
    <wb:indicator id="6.0.GDPpc">GDP per capita (2005 USD)</wb:indicator>
    <wb:country id="L5">Andean Region</wb:country>
    <wb:date>2010</wb:date>
    <wb:value>9711.85739310366</wb:value>
    <wb:decimal>0</wb:decimal>
  </wb:data>
</wb:rows>

Dans cet exemple :

  • depth=2, car wb:data est le 2e tag dans son chemin d’accès (wb:rows/wb:data) ;

  • le filtrage des tags n’est pas nécessaire, car tous les éléments à cette profondeur sont des enregistrements.

Jeu de données résultant :

wb:indicateur

wb:pays

wb:date

wb:valeur

wb:décimal

{“#texte”: “PIB par habitant (en USD en 2005)”, “@id”: “6.0.GDPpc”}

{“#texte”: “Région des Andes”, “@id”: “L5”}

2005 8154.72913271721 0

{“#texte”: “PIB par habitant (en USD en 2005)”, “@id”: “6.0.GDPpc”}

{“#texte”: “Bolivie”, “@id”: “BO”}

2009 5152.46337890625 0

{“#texte”: “PIB par habitant (en USD en 2005)”, “@id”: “6.0.GDPpc”}

{“#texte”: “Bolivie”, “@id”: “BO”}

2006 4715.9892578125 0

Exemple 2 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="UTF-8"?>
<shoppingList>
    <id>abcdef123</id>
    <description>A shopping list</description>
    <basket>
        <itemCount>3</itemCount>
        <totalQuantity>19</totalQuantity>
        <item>
            <name>tomato</name>
            <quantity>10</quantity>
        </item>
        <item>
            <name>potato</name>
            <quantity>5</quantity>
        </item>
        <item>
            <name>banana</name>
            <quantity>4</quantity>
        </item>
    </basket>
</shoppingList>

Remarque : la structure XML de ce document est complexe, afin que la détection automatique de paramètres ne puisse pas deviner la profondeur réelle. L’extracteur doit être configuré manuellement.

Dans cet exemple :

  • depth=3, car item est le 3e tag dans son chemin d’accès (shoppingList/basket/item) ;

  • le filtrage des tags sur item est nécessaire car itemCount et totalQuantity sont également à la profondeur depth=3 mais ne sont pas pertinents.

Jeu de données résultant :

name

quantité

pomme de terre

5

banane

4

tomate

10