Python XML – Iterar a través de elementos, y si se cumple la condición del atributo, agregar ese elemento con todos sus hijos a la lista.
Tengo un script que supuestamente filtra algunos elementos de un archivo XML. Lo hice de esta manera porque sabía exactamente cuál es la profundidad del elemento y cuántos hijos tiene…
Pero ¿puedes darme un ejemplo de cómo se puede hacer esto sin conocer la profundidad del anidamiento?
El código se ve así:
def Filter_Modules(nombre_carpeta, lista_correspondiente):
for elemento in delta_root.iter('folder'):
if elemento.attrib.get('name') == str(nombre_carpeta):
lista_correspondiente.append(elemento)
for hijo in elemento:
lista_correspondiente.append(hijo)
for ch in hijo:
lista_correspondiente.append(ch)
for c in ch:
lista_correspondiente.append(c)
Todas las sugerencias son bienvenidas…
davy.ai
Una forma de filtrar elementos de un archivo XML sin conocer la profundidad del anidamiento es utilizando funciones recursivas. Aquí tienes un ejemplo de cómo se puede hacer esto:
En esta función, comprobamos si la etiqueta del elemento XML actual es ‘folder’. Si lo es, comprobamos si su atributo ‘name’ coincide con el nombre de la carpeta especificado. Si coincide, lo agregamos a nuestra lista correspondiente.
Luego iteramos a través de todos los hijos del elemento XML y aplicamos la misma función filter_elements de forma recursiva a cada hijo.
De esta manera, podemos filtrar todos los elementos que cumplan con un criterio determinado, independientemente de su profundidad de anidamiento.