Aditya Kuls
Aditya Kuls

Reputation: 105

Deleting xml tags with particular Element name using xml.dom in python

How can we delete tags with particular Element name in an xml code using xml.dom (not lxml.etree) in python.

e.g. if we have the following xml code:

<?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>

How can we delete all the tags named <title> using xml.dom in python?

Upvotes: 1

Views: 4169

Answers (1)

bhansa
bhansa

Reputation: 7504

Select all the elements by title tag and remove them using removeChild

Update:

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()

You can also write new changes to xml file by :

with open("result.xml","w") as fs:
    fs.write(xmldoc.toxml())
    fs.close()

Upvotes: 6

Related Questions