現在 Python 2.4.3 を使用しており、アップグレードは許可されていません
更新されたファイルの XML コメントと共に、1 つ以上のタグの特定の属性の値を変更したいと考えています。
以下に示すように、XMLファイルを引数として取り、指定されたタグごとに属性を変更するPythonスクリプトを作成できました。
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 コメントが含まれているという事実を除きますが、それらは長い間なくなっており、これは悪いことです。
parse は XML 構造のみを取得すると思われますが、XML コメントは構造の一部であると考えました。また、元のドキュメントの「人間が読める」書式設定がなくなって久しいことも認識していますが、期待される動作であり、後でxmllint --format
または XSL を使用して書式設定する必要があることに気付きました。