【问题标题】:Is there any way to change the element Node name in minidom Python?有没有办法在 minidom Python 中更改元素节点名称?
【发布时间】:2015-02-02 08:32:09
【问题描述】:

我遇到过 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 的子 Element 节点。 假设我想将元素节点'APPLE'的名称更改为'APPLEinc,我该如何更改它?

【问题讨论】:

    标签: python xml python-2.7 minidom


    【解决方案1】:

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

    与其使用 DOM API,不如切换到ElementTree 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)
    

    【讨论】:

    • 无论如何我都不想听到这个……!!!那么我也应该切换到 ElementTree.... 非常感谢 Martijn
    猜你喜欢
    • 2021-08-12
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多