Archivos XML

Puede utilizar un archivo XML (.xml) como origen.

Esta plataforma 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.

Creación

Para obtener más información sobre cómo añadir un origen de archivo, consulte Recuperar un archivo.

Configuración

Parámetros XML

Nombre

Descripción

Uso

Etiquetas primarias

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.

Especifique el número de etiquetas primarias de las que se obtendrán los atributos (por ejemplo, 2).

Nombre de las etiquetas para extraer

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

Especifique la etiqueta que se extraerá (por ejemplo, item) en el cuadro Nombre de las etiquetas para extraer. Si deja vacío el cuadro, todas las etiquetas de la profundidad especificada se convertirán en registros.

Profundidad de etiqueta

Profundidad de las etiquetas que deben convertirse en registros.

Especifique la profundidad de la etiqueta repetida en el cuadro Profundidad de etiqueta (por ejemplo, 3).

Extraer nombre de archivo

Nombre

Descripción

Uso

Extraer nombre de archivo

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

De forma predeterminada, esta opción está desactivada. Active esta opción para extraer el nombre de archivo en una columna adicional.

Especificaciones técnicas

Creación de campos

La directiva para crear campos a partir de un elemento se define tal como se muestra en los ejemplos siguientes.

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 de etiqueta se establece en 2 porque wb:data está en el segundo nivel del árbol XML (wb:rows/wb:data).

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

El conjunto de datos resultante tiene el aspecto siguiente:

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>

En este ejemplo, el árbol XML es complejo. Por lo tanto, la detección de parámetros automáticos no podrá averiguar la profundidad correcta. Debe configurar el origen manualmente:

  • Profundidad de etiqueta debe establecerse en 3 porque el nodo item está en el tercer nivel del árbol XML (shoppingList/basket/item).

  • Nombre de las etiquetas para extraer debe establecerse en item porque itemCount y totalQuantity también están en el tercer nivel pero no son relevantes.

El conjunto de datos resultante tiene el aspecto siguiente:

nombre

quantity
potato 5
banana 4
tomato 10