В настоящее время используется Python 2.4.3 и не разрешается обновлять
Я хочу изменить значения данного атрибута в одном или нескольких тегах вместе с комментариями XML в обновленном файле.
Мне удалось создать Python script, который принимает 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.