XML connector

De XML-connector wordt gebruikt voor XML (.xml) bestanden.

Deze connector maakt records aan vanuit een willekeurige XML-structuur door alle elementen met een specifieke diepte (optioneel gefilterd per tag) te converteren naar een reeks records. Voor elk element dat wordt geconverteerd naar een record, worden zowel attributen, omsloten tags en content geconverteerd naar velden. Complexe gegevens in velden worden geconverteerd naar een JSON-weergave die zowel attributen als content bevat.

De XML-connector kan ook RDF (.rdf) bestanden lezen.

Aanmaak

Zie how to source a file.

Configuratie

Naam

Omschrijving

Gebruik

Diepte van geëxtraheerde elementen

Diepte van de tags die geconverteerd moeten worden naar records.

Vermelde diepte van de herhaalde tag in het tekstvak (bijv. "3").

Extraheer bestandsnaam

Maakt een nieuwe kolom aan met de naam van de bronbestand;

Standaard is het vakje niet aangevinkt. Vink het vakje aan om de bestandsnaam te extraheren in een toegevoegde kolom.

Aantal ouders om attributen van te krijgen

Wanneer de omsloten tags relevante attributen omvatten, gebruik dan deze optie om ze toe te voegen in de records.

Vermeld het aantal parent tags om attributen van te krijgen (bijv. "2").

Tag van geëxtraheerde elementen

Wanneer irrelevante tags dezelfde diepte hebben als de geëxtraheerde elementen, gebruik dan deze optie om enkel relevante tags te filteren.

Vermeld de tag die geëxtraheerd moet worden (bijv. "item"). Wanneer dit leeg wordt gelaten, worden alle tags met de gespecificeerde diepte geconverteerd naar records.

Technische specificaties

Aanmaak van een veld

Het beleid voor het aanmaken van velden vanuit een item staat gedefinieerd zoals in onderstaand voorbeeld.

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>

attribuut

other_attribute indicator

land

decimaal

content

waarde van een attribuut

waarde van een andere attibuut

bbp per hoofd van de bevolking

Andean Region 0  

tag van 2de data

       

Enkel tekst

JSON-weergave

Complexe data in velden wordt geconverteerd naar een JSON zoals in onderstaand voorbeeld..

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"
        }
    }
}

Voorbeelden

Voorbeeld 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>

In dit voorbeeld:

  • depth=2 omdat wb:data de 2de tag is in dit pad (wb:rows/wb:data)

  • het filteren van tags is niet noodzakelijk omdat alle elementen op deze diepte records zijn

Resulterende dataset:

wb:indicator wb:country wb:date wb:value wb:decimal

{"#text": "bbp per hoofd van de bevolking (2005 USD)", "@id": "6.0.GDPpc"}

{"#text": "Andean Region", "@id": "L5"} 2005 8154.72913271721 0

{"#text": "bbp per hoofd van de bevolking (2005 USD)", "@id": "6.0.GDPpc"}

{"#text": "Bolivia", "@id": "BO"} 2009 5152.46337890625 0

{"#text": "bbp per hoofd van de bevolking (2005 USD)", "@id": "6.0.GDPpc"}

{"#text": "Bolivia", "@id": "BO"} 2006 4715.9892578125 0

Voorbeeld 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>

Opmerking: de XML-structuur van dit document is complex, dus zou de automatische detectie van parameters niet mogelijk zijn om de gepaste diepte te raden. De extractor moet manueel geconfigureerd worden.

In dit voorbeeld:

  • diepte=3 omdat item de 3de tag is in dit pad (shoppingList/basket/item)

  • het filteren van tags op item is noodzakelijk omdat itemCount en totalQuantity ook op de diepte=3 staan maar niet relevant zijn

Resulterende dataset:

naam

aantal

aardappe

5

banaan

4

tomaat

10