Actualmente usando Python 2.4.3, y no se les permite actualizarCómo mantener los comentarios al analizar XML usando Python/elementtree
quiero cambiar los valores de un atributo determinado en una o más etiquetas, junto con XML-comentarios en el archivo actualizado.
He conseguido crear un script en Python que toma un archivo XML como argumento, y para cada etiqueta especificada cambia un atributo, como se muestra a continuación
def update(file, state):
global Etree
try:
from elementtree import ElementTree
print '*** using ElementTree'
except ImportError, e:
print '***'
print '*** Error: Must install either ElementTree or lxml.'
print '***'
raise ImportError, 'must install either ElementTree or lxml'
#end try
doc = Etree.parse(file)
root = doc.getroot()
for element in root.findall('.//StateManageable'):
element.attrib['initialState'] = state
#end for
doc.write(file)
#end def
esto está bien, los atributos "initialState "se actualizan, excepto por el hecho de que mi XML original también contiene muchos comentarios XML, pero se han ido hace mucho tiempo, lo que es malo.
Sospecho que el análisis solo recupera la estructura XML, pero pensé que los comentarios XML eran parte de la estructura. También me doy cuenta de que el formateo "legible por humanos" de mi documento original se ha ido, pero que me he dado cuenta de que es el comportamiento esperado, es necesario formatearlo después usando xmllint --format
o XSL.
2.4? Mis condolencias. – delnan
apueste, tuve un momento difícil cuando comencé a crear mis primeros scripts al darme cuenta de que _todas las cosas buenas que encontré eran 2.7 :-) – rhellem