有没有办法在minidom Python中更改元素节点名称?

时间:2014-12-04 12:43:49

标签: python xml python-2.7 minidom

我遇到过minidom API来获取子节点,获取父节点,设置和获取属性,删除它们。

考虑以下XML:

<TECH_COMPANIES>
    <APPLE>
        <IPHONE>
            <IPHONE6>sameOld </IPHONE6>
        </IPHONE>
        <IPAD>nice</IPAD>
        <MAC>awesome</MAC>
    </APPLE>

    <GOOGLE>
        <GMAIL>BREEZE</GMAIL>
        <PICASA>COOL_SHARE</PICASA>
    </GOOGLE>

    <LENOVO> </LENOVO>

    <SAMSUNG>
        <NOTE1> 
            <GORRILLA_GLASS ScratchProof="yes" Tranparency="99%" Smoothness="85%"/> 
        </NOTE1>

    </SAMSUNG>
</TECH_COMPANIES>

APPLE,GOOGLE,LENOVO和SAMSUNG是TECH_COMPANIES的子元素节点。 假设我想将元素节点'APPLE'的名称更改为'APPLEinc,我该如何更改它?

1 个答案:

答案 0 :(得分:3)

minidom为您提供了标准的DOM API实现。 W3C DOM API无法重命名元素;相反,您应该重新创建元素并从旧元素重新填充它。至少可以说,这很痛苦。所以程序将是:

您最好切换到ElementTree API,而不是使用DOM API。这允许您以更加pythonic的方式操纵树:

from xml.etree import ElementTree as ET

root = ET.fromstring(xml_string)
apple = root.find('.//APPLE')
apple.tag = 'APPLEinc'
xml_string = ET.tostring(root)