【问题标题】:Copy and Write XML Node in Python在 Python 中复制和写入 XML 节点
【发布时间】:2025-12-03 23:55:01
【问题描述】:

我有一个大型 XML 文件,我需要对其进行解析并查找特定节点。找到后,我需要制作一个副本,编辑几个值并再次写入文件。

到目前为止,我已经设法获得了我想要的 DOM 元素。 XML 中实际上已经有两个这样的元素,所以在我完成后,将会有三个。一旦我制作了 DOM 的副本并编辑了值,我该如何将其写入 DOM(以及文件)?

我目前正在使用 Python 的 from xml.dom import minidom

【问题讨论】:

    标签: python xml dom


    【解决方案1】:

    您从创建文档开始:

     Document doc = Document("your_root")
    

    如果它是你要添加的文本节点,你追加:

     text_node = doc.createTextNode(str(some content))
     doc.appendChild(text_node)
    

    如果你有例如<some_elem key="my value">some my text</some_elem>:

    这样做:

    text_node = doc.createTextNode('some my text')
    elem.appendChild(text_node)
    elem.setAttribute('key', 'my value')
    

    如果是复杂元素,请使用:

    elem = doc.createElement('your_elem')
    

    如果你需要设置属性:

    elem.setAttribute("some-attribute",your_attr)
    

    如果你需要添加一些东西:

    elem.appendChild( some_other_elem )
    

    然后追加元素:

    doc.appendChild( elem )
    

    如果您需要字符串表示,请执行以下操作:

    doc.toxml()
    

    doc.toprettyxml()
    

    【讨论】:

    • 如果我有一个<FIELD ID="abc" TITLE="hello">VALUE</FIELD> 形式的元素。拥有元素后如何设置 VALUE ?谢谢你的帮助! :D
    • 尝试做一个:field.childNodes[0].nodeValue = new_val。捕获任何 IndexErrors 等。
    【解决方案2】:

    来自minidom documentation

    from xml.dom.minidom import getDOMImplementation
    
    impl = getDOMImplementation()
    
    newdoc = impl.createDocument(None, "some_tag", None)
    top_element = newdoc.documentElement
    text = newdoc.createTextNode('Some textual content.')
    top_element.appendChild(text)
    

    所以我猜appendChild 是你要的?

    【讨论】: