in

Análisis de XML en Python – GeeksforGeeks

gfg 200x200 min
Analizando XML
Hemos creado parseXML () función para analizar el archivo XML. Sabemos que XML es un formato de datos intrínsecamente jerárquico y la forma más natural de representarlo es con un árbol. Mire la imagen a continuación, por ejemplo:
analizar XML

Aquí, estamos usando xml.etree.ElementTree (llámelo ET, en resumen) módulo. Element Tree tiene dos clases para este propósito: ElementTree representa todo el XML
documento como un árbol, y Elemento representa un solo nodo en este árbol. Las interacciones con todo el documento (lectura y escritura hacia / desde archivos) generalmente se realizan en el ElementTree nivel. Las interacciones con un solo elemento XML y sus subelementos se realizan en el Elemento nivel.

Ok, repasemos el parseXML () funcionar ahora:

tree = ET.parse(xmlfile)

Aquí, creamos un ElementTree objeto analizando el pasado xmlfile.

root = tree.getroot()

getroot () función devuelve la raíz de árbol como un Elemento objeto.

for item in root.findall('./channel/item'):

Ahora, una vez que haya echado un vistazo a la estructura de su archivo XML, notará que solo estamos interesados ​​en artículo elemento.
./channel/item es en realidad XPath sintaxis (XPath es un lenguaje para abordar partes de un documento XML). Aquí queremos encontrar todos artículo nietos de canal hijos del raíz(denotado por ‘.’) elemento.
Puede leer más sobre la sintaxis XPath compatible aquí.

for item in root.findall('./channel/item'):

        # empty news dictionary
        news = {}

        # iterate child elements of item
        for child in item:

            # special checking for namespace object content:media
            if child.tag == '{http://search.yahoo.com/mrss/}content':
                news['media'] = child.attrib['url']
            else:
                news[child.tag] = child.text.encode('utf8')

        # append news dictionary to news items list
        newsitems.append(news)

Ahora, sabemos que estamos iterando artículo elementos donde cada artículo El elemento contiene una noticia. Entonces, creamos un vacío Noticias diccionario en el que almacenaremos todos los datos disponibles sobre la noticia. Para iterar a través de cada elemento hijo de un elemento, simplemente lo recorremos, así:

for child in item:

Ahora, observe un elemento de elemento de muestra aquí:
dieciséis

Tendremos que manejar las etiquetas de espacio de nombres por separado a medida que se expanden a su valor original, cuando se analizan. Entonces, hacemos algo como esto:

if child.tag == '{http://search.yahoo.com/mrss/}content':
                news['media'] = child.attrib['url']

child.attrib es un diccionario de todos los atributos relacionados con un elemento. Aquí, estamos interesados ​​en url atributo de Contenido multimedia etiqueta de espacio de nombres.
Ahora, para todos los demás niños, simplemente hacemos:

news[child.tag] = child.text.encode('utf8')

child.tag contiene el nombre del elemento hijo. child.text almacena todo el texto dentro de ese elemento hijo. Entonces, finalmente, un elemento de elemento de muestra se convierte en un diccionario y se ve así:

{'description': 'Ignis has a tough competition already, from Hyun.... ,
 'guid': 'http://www.hindustantimes.com/autos/maruti-ignis-launch.... ,
 'link': 'http://www.hindustantimes.com/autos/maruti-ignis-launch.... ,
 'media': 'http://www.hindustantimes.com/rf/image_size_630x354/HT/... ,
 'pubDate': 'Thu, 12 Jan 2017 12:33:04 GMT ',
 'title': 'Maruti Ignis launches on Jan 13: Five cars that threa..... }

Luego, simplemente agregamos este elemento dict a la lista novedades.
Finalmente, se devuelve esta lista.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

apple touch icon@2

git: crea una etiqueta en un repositorio de GitHub

edit

Software libre vs Freeware: diferencia y comparación