python - read - xml etree elementtree tutorial
¿Cómo puedo verificar la existencia de atributos y etiquetas en XML antes de analizar? (1)
Estoy analizando un archivo XML a través de Element Tree en python y escribiendo el contenido en un archivo cpp.
El contenido de las etiquetas de los niños será variante para diferentes etiquetas. Por ejemplo, la primera etiqueta de evento tiene una etiqueta de fiesta como secundaria, pero la segunda etiqueta de evento no tiene.
-> ¿Cómo puedo verificar si una etiqueta existe o no antes de analizar?
-> Children tiene un atributo de valor en la etiqueta del primer evento, pero no en la segunda. ¿Cómo puedo verificar si un atributo existe o no antes de tomar su valor?
-> Actualmente mi código emite un error para una etiqueta de parte no existente y establece un valor de atributo "Ninguno" para la segunda etiqueta secundaria.
<main>
<event>
<party>Big</party>
<children type="me" value="3"/>
</event>
<event>
<children type="me"/>
</event>
</main>
Código:
import xml.etree.ElementTree as ET
tree = ET.parse(''party.xml'')
root = tree.getroot()
for event in root.findall(''event''):
parties = event.find(''party'').text
children = event.get(''value'')
Quiero comprobar las etiquetas y luego tomar sus valores.
Si una etiqueta no existe, .find()
hecho devuelve None
. Simplemente prueba para ese valor:
for event in root.findall(''event''):
party = event.find(''party'')
if party is None:
continue
parties = party.text
children = event.get(''value'')
Ya usa .get()
en el evento para probar el value
del atributo; también devuelve None
si el atributo no existe.
Los atributos se almacenan en el diccionario .attrib
, por lo que puede usar técnicas estándar de Python para probar el atributo explícitamente también:
if ''value'' in event.attrib:
# value attribute is present.