📜  XML DOM-删除节点(1)

📅  最后修改于: 2023-12-03 15:21:18.732000             🧑  作者: Mango

XML DOM-删除节点

在操作XML文档时,经常需要删除某些节点。XML DOM(文档对象模型)提供了相应的方法来实现节点的删除操作。

以下是删除节点的方法:

node.removeChild(childNode)

该方法用于删除某个节点的子节点。其中,node为要删除子节点的父节点,而childNode为要删除的子节点。

举例来说,假如我们有以下的XML文档:

<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
  </book>
</bookstore>

如果我们想要删除第一个book节点的title节点,那么可以使用以下代码:

import xml.dom.minidom

domTree = xml.dom.minidom.parse('books.xml')
bookstore = domTree.documentElement

books = bookstore.getElementsByTagName('book')

book = books[0]
title = book.getElementsByTagName('title')[0]

book.removeChild(title)

with open('books.xml', 'w', encoding='utf-8') as f:
  domTree.writexml(f, encoding='utf-8')

这里,我们首先解析出XML文档,然后获取到第一个book节点和它的title节点。最后,通过调用book.removeChild(title)来删除title节点。最后,将修改后的XML文档重新保存到文件中。

需要注意的是,在删除节点时,子节点会一同被删除。如果要删除的节点有子节点,那么这些子节点也会被删除。

除了用removeChild()方法删除节点外,还可以使用parentNode.removeChild(childNode)方法删除节点的子节点。这个方法与removeChild()很类似,只不过它是直接从节点的父节点中删除子节点。

总之,XML DOM提供了多种方式来删除节点,开发人员可以根据自己的需要选择最适合的方法来完成删除节点的操作。