【发布时间】:2011-05-27 08:40:53
【问题描述】:
目前使用 Python 2.4.3,不允许升级
我想更改一个或多个标签中给定属性的值,以及更新文件中的 XML-cmets。
我已经设法创建了一个 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 cmets,但它们早已不复存在,这很糟糕。
怀疑解析只检索 XML 结构,但我认为 XML-cmets 是结构的一部分。我也意识到我的原始文档的“人类可读”格式早已不复存在,但我已经意识到这是预期的行为,之后需要使用 xmllint --format 或 XSL 进行格式化。
【问题讨论】:
-
你打赌,当我开始创建我的第一个脚本时,我很难意识到 所有 我找到的例子中的好东西都是 2.7 的:-)
标签: python xml elementtree