В настоящее время используется Python 2.4.3, и не разрешено обновлять
Я хочу изменить значения данного атрибута в одном или нескольких тегах вместе с XML-комментарии в обновленном файле.
Мне удалось создать скрипт Python, который принимает XML-файл в качестве аргумента, и для каждого указанного тега изменяет атрибут, как показано ниже
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
Все нормально, атрибуты initialState обновлены, за исключением того факта, что мой исходный XML также содержит много комментариев XML, но они давно ушли, что плохо.
Подозреваю, что синтаксический анализ извлекает только XML-структуру, но я думал, что XML-комментарии являются частью структуры.Я также понимаю, что «удобочитаемое» форматирование моего исходного документа давно прошло, но я понял, что это ожидаемое поведение, впоследствии необходимо отформатировать, используя xmllint --format
или XSL.