39. Importando XML

Crea una función que analice (parse) un archivo XML y extraiga información específica de él.

La función debe aceptar el contenido de un XML como una cadena de texto y un "path" (o una serie de etiquetas) que indique qué datos extraer. Devolverá los datos extraídos en una estructura de datos adecuada (por ejemplo, una lista de diccionarios).

xml_ejemplo = """<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J. K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="web">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>
"""

def parse_xml_data(xml_string: str, path_elements: list[str]) -> list[dict]:
    # Tu código aquí (puedes usar librerías de parsing XML si no modifican estados mutables globales)
    pass

# Ejemplo: Extraer títulos y autores de libros
# parse_xml_data(xml_ejemplo, ["book", "title"])
# [
#   {"title": "Everyday Italian"},
#   {"title": "Harry Potter"},
#   {"title": "Learning XML"}
# ]
# parse_xml_data(xml_ejemplo, ["book", "author"])
# [
#   {"author": "Giada De Laurentiis"},
#   {"author": "J. K. Rowling"},
#   {"author": "Erik T. Ray"}
# ]

Ratoncito

Implementa la función para extraer el texto de los elementos dados por el path_elements.

Dragón

Extiende la función para que también extraiga los atributos de los elementos (por ejemplo, el atributo category de <book>). Además, considera el manejo de estructuras XML más complejas donde los elementos pueden estar anidados a diferentes profundidades o con los mismos nombres de etiqueta.

Este trabajo está bajo una licencia Attribution-NonCommercial-NoDerivatives 4.0 International.

¿Me invitas a un café?

Visitantes en tiempo real

Estás solo: 🐱