在python中使用xml.dom删除具有特定元素名称的xml标签

Adi*_*uls 1 python xml dom

我们如何在 python 中使用xml.dom(not lxml.etree) 删除 xml 代码中具有特定元素名称的标签。

例如,如果我们有以下 xml 代码:

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
   <author>Gambardella, Matthew</author>
   <title>XML Developer's Guide</title>
   <genre>Computer</genre>
   <price>44.95</price>
   <publish_date>2000-10-01</publish_date>
   <description>An in-depth look at creating applications 
   with XML.</description>
   </book>
   <book id="bk102">
   <author>Ralls, Kim</author>
   <title>Midnight Rain</title>
   <genre>Fantasy</genre>
   <price>5.95</price>
   <publish_date>2000-12-16</publish_date>
   <description>A former architect battles corporate zombies, 
   an evil sorceress, and her own childhood to become queen 
   of the world.</description>
   </book>
   <book id="bk103">
  <author>Corets, Eva</author>
  <title>Maeve Ascendant</title>
  <genre>Fantasy</genre>
  <price>5.95</price>
  <publish_date>2000-11-17</publish_date>
  <description>After the collapse of a nanotechnology 
  society in England, the young survivors lay the 
  foundation for a new society.</description>
  </book>
  <book id="bk104">
  <author>Corets, Eva</author>
  <title>Oberon's Legacy</title>
  <genre>Fantasy</genre>
  <price>5.95</price>
  <publish_date>2001-03-10</publish_date>
  <description>In post-apocalypse England, the mysterious 
  agent known only as Oberon helps to create a new life 
  for the inhabitants of London. Sequel to Maeve 
  Ascendant.</description>
  </book>
</catalog>
Run Code Online (Sandbox Code Playgroud)

如何删除python中所有名为<title>using的标签?xml.dom

bha*_*nsa 5

按标签选择所有元素title并使用删除它们removeChild

更新:

from xml.dom import minidom
xmldoc = minidom.parse("book_xml.xml")

nodes = xmldoc.getElementsByTagName("title")

for node in nodes:
    parent = node.parentNode
    parent.removeChild(node) 

print xmldoc.toxml()
Run Code Online (Sandbox Code Playgroud)

您还可以通过以下方式向 xml 文件写入新的更改:

with open("result.xml","w") as fs:
    fs.write(xmldoc.toxml())
    fs.close()
Run Code Online (Sandbox Code Playgroud)