如何使用python更改元素的名称,包括xml
中的数字?
我已经知道如何使用python更改xml
中的元素名称,但我想知道如何更改元素的名称,包括数字。
以下是xml的示例。
<AAA> <- this the first AAA under data>
<CCC>
<BBB>This</BBB>
</CCC>
<CCC>
<BBB>is</BBB>
</CCC>
<CCC>
<BBB>test</BBB>
</CCC>
</AAA>
<AAA> <- this the second AAA under data>
<CCC>
<BBB>This is test</BBB>
</CCC>
</AAA>
<AAA>
<BBB>
<CCC>This is test</CCC>
</BBB>
</AAA>
我正在尝试将AAA
元素名称(包括AAA
到AAA1
和AAA
更改为AAA2
。
第一个AAA
应更改为AAA1
,第二个AAA
更改为AAA2
,如下所示。
<AAA1> <- this the first AAA under data>
<CCC>
<BBB>This</BBB>
</CCC>
<CCC>
<BBB>is</BBB>
</CCC>
<CCC>
<BBB>test</BBB>
</CCC>
</AAA1>
<AAA2> <- this the second AAA under data>
<CCC>
<BBB>This is test</BBB>
</CCC>
</AAA2>
<AAA3>
<BBB>
<CCC>This is test</CCC>
</BBB>
</AAA3>
答案 0 :(得分:2)
您可以尝试以下操作,它会显示original.xml
并创建new.xml
:
import xml.etree.ElementTree as xmlParser
from xml import etree
with open("original.xml") as f:
xmlDoc = xmlParser.fromstringlist(["<root>", f.read(), "</root>"])
for index,element in enumerate(xmlDoc.iter('AAA')):
element.tag = 'AAA' + str(index+1)
# save to new xml file
with open('new.xml','ab') as f:
out = list(xmlDoc)
for item in out:
f.write(etree.ElementTree.tostring(item))