Agregando un elemento hermano después de un elemento hijo en XML utilizando Element Tree.
He creado un elemento usando Elementtree. Quiero añadir este elemento después de un nombre de usuario. Encontré el nombre de usuario que quería, pero no puedo añadir el elemento después de ese nombre de usuario.
Mi código:
import xml.etree.ElementTree as ET
root = ET.parse("sample.xml")
feature_list = ET.Element('FeatureList')
for f in range(0,5):
ele = ET.SubElement(feature_list, 'FeatureDetail')
sub_ele = ET.SubElement(ele, 'FeatureId')
sub_ele.text = str(f)
for UserName in root.findall('.//UserName'):
if(UserName.text == 'john@abc.com'):
Sibling = Sibling.UserName
Sibling.append(feature_list)
No hay ningún comando “sibling” en Elementtree. ¿Cómo puedo añadir un elemento después del nombre de usuario que encontré? Gracias de antemano. Quiero la solución utilizando solo Elementtree, no lxml.
davy.ai
Para agregar un elemento después de un nombre de usuario específico en ElementTree, puedes usar el método insert() del elemento padre. Aquí tienes un ejemplo de código para lograr esto:
Aquí, primero analizamos el archivo XML y creamos el nuevo elemento
feature_list
para agregar. Luego recorremos todos los elementosUserName
y encontramos el que queremos agregar el nuevo elemento después. Una vez lo encontramos, obtenemos su elemento padre (user_parent
) y su índice en el padre (user_index
), y usamos el métodoinsert()
para agregar el nuevo elemento después del nombre de usuario encontrado. Salimos del bucle una vez que se agrega el elemento para evitar agregarlo varias veces si hay varios nombres de usuario con el mismo texto. Por último, escribimos el archivo XML actualizado en el disco.