TransWikia.com

Cómo obtener un tag específico de un xml con python

Stack Overflow en español Asked by LUIS BENITO on January 18, 2021

tengo un problema y lo simplifiqué así:
Tengo 5 tags con el nombre: "outline", unas están más anidadas que otras y todas tienen el atributo ‘text’.
Sucede que con mi código he logrado capturar los valores de ‘text’ pero de todas los "outline" e incluso de los "outline" más anidados, pero yo solo quiero de los "outline" más cercanos a la raíz.

introducir la descripción de la imagen aquí

Este el código que estoy usando:

from xml.etree import ElementTree

with open('podcasts.opml.xml', 'rt') as f:
    tree = ElementTree.parse(f)
    root = tree.getroot()
nodos = root.findall('.//body//outline')

for node in nodos:
    texto = node.attrib.get('text')
    print(texto)

Esta es la salida:
Non-tech
99% Invisible
Python
Talk Python to Me
Podcast.init
Pero yo solo necesito: Non-tech Python

One Answer

El problema que veo es que usas esto: nodos = root.findall('.//body//outline') Cuando navegas un xml // implica que puede saltar cuantos nodos intermedios hagan falta, sustituyendo esa línea por nodos = root.findall('.//body/outline') debería darte solo los que cuelgan directamente de body

Correct answer by Benito-B on January 18, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP