如何使用python更改元素的名称,包括xml中的数字?

时间:2018-05-20 02:37:17

标签: python xml-parsing

如何使用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元素名称(包括AAAAAA1AAA更改为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>

1 个答案:

答案 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))