Conector de XML

El conector de XML se utiliza para los archivos XML (.xml).

Este conector crea registros a partir de cualquier estructura XML arbitraria convirtiendo todos los elementos de una profundidad específica (opcionalmente filtrados por etiqueta) en un conjunto de registros. Para cada uno de los elementos convertidos en un registro, tanto los atributos como las etiquetas delimitadas y el contenido se convierten en campos. Los datos complejos del interior de los campos se convierten en una representación JSON que contiene tanto los atributos como el contenido.

El conector de XML también puede leer archivos RDF (.rdf).

Creación

Consulte cómo añadir un archivo.

Configuración

Nombre

Descripción

Uso

Profundidad de elementos extraídos

Profundidad de las etiquetas que deben convertirse en registros.

Indique la profundidad de la etiqueta repetida en el cuadro de texto (p. ej. 3).

Extraer nombre de archivo

Crea una columna nueva con el nombre del archivo de origen.

De forma predeterminada, la casilla no está marcada. Marque la casilla para extraer el nombre de archivo en una columna añadida.

Número de elementos primarios de los cuales obtener atributos

Si las etiquetas circundantes contienen atributos relevantes, utilice esta opción para añadirlos en los registros.

Indique el número de etiquetas primarias de las que se obtendrán los atributos (p. ej. 2).

Etiqueta de elementos extraídos

Si hay etiquetas irrelevantes en la misma profundidad que los elementos extraídos, utilice esta opción para filtrar únicamente las etiquetas relevantes.

Indique la etiqueta que se extraerá (p. ej. item). Si se deja vacía, todas las etiquetas de la profundidad especificada se convertirán en registros.

Especificaciones técnicas

Creación de campos

La directiva para crear campos a partir de un elemento se define según el ejemplo siguiente.

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>
attribute other_attribute indicator country decimal content
attribute value other attribute value GDP per capita Andean Region 0  
2nd data tag         Text only

Representación JSON

Los datos complejos del interior de los campos se convierten en formato JSON según el ejemplo siguiente.

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

Ejemplos

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

En este ejemplo:

  • Profundidad=2 porque wb:data es la 2ª etiqueta de su ruta (wb:rows/wb:data).

  • No es necesario filtrar las etiquetas dado que todos los elementos de esta profundidad son registros.

Conjunto de datos resultante:

wb:indicator wb:country wb:date wb:value wb:decimal
{"#text": "GDP per capita (2005 USD)", "@id": "6.0.GDPpc"} {"#text": "Andean Region", "@id": "L5"} 2005

8154,72913271721

0
{"#text": "GDP per capita (2005 USD)", "@id": "6.0.GDPpc"} {"#text": "Bolivia", "@id": "BO"} 2009

5152,46337890625

0
{"#text": "GDP per capita (2005 USD)", "@id": "6.0.GDPpc"} {"#text": "Bolivia", "@id": "BO"} 2006

4715,9892578125

0

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

Nota: La estructura XML de este documento es compleja, por lo que la detección de parámetros automáticos no podrá averiguar la profundidad correcta. Debe configurarse manualmente el extractor.

En este ejemplo:

  • Profundidad=3 porque item es la 3ª etiqueta de su ruta (shoppingList/basket/item).

  • Es necesario filtrar las etiquetas en item puesto que itemCount y totalQuantity también se encuentran en profundidad=3 pero no son relevantes.

Conjunto de datos resultante:

nombre

quantity
potato 5
banana 4
tomato 10