Python to rename XML elements

I have an XML file where I want to edit or rename elements and save the file. What is the best way to do this. XML file below

<breakfast_menu> <food> <name>Belgian Waffles</name> <price>$5.95</price> <description>two of our famous Belgian Waffles with plenty of real maple syrup</description> <calories>650</calories> </food> <food> <name>Strawberry Belgian Waffles</name> <price>$7.95</price> <description>light Belgian waffles covered with strawberries and whipped cream</description> <calories>900</calories> </food> <food> <name>Berry-Berry Belgian Waffles</name> <price>$8.95</price> <description>light Belgian waffles covered with an assortment of fresh berries and whipped cream</description> <calories>900</calories> </food> <food> <name>French Toast</name> <price>$4.50</price> <description>thick slices made from our homemade sourdough bread</description> <calories>600</calories> </food> <food> <name>Homestyle Breakfast</name> <price>$6.95</price> <description>two eggs, bacon or sausage, toast, and our ever-popular hash browns</description> <calories>950</calories> </food> </breakfast_menu> 

How can I change the "description" to "details"?

+4
source share
3 answers

I suggest you use ElementTree to parse your XML document.

This is the simplest and best library for working with XML documents in python.

Here is a sample code:

 import xml.etree.ElementTree as xmlParser xmlDoc = xmlParser.parse('path to your xml doc') rootElement = xmlDoc.getroot() for element in rootElement.iter('description'): element.tag = 'details' # Saving the xml xmlDoc.write('path to your new xml doc') 
+6
source

If your xml always remains so simple, you can use regular expressions:

 import re xml = """ <breakfast_menu> ... </breakfast_menu> """ regex = re.compile('<description>(.*)</description>') xml = regex.sub(r'<details>\1</details>',xml) 
0
source

You have two options. If xml is small, replace the regular string. If xml is very large, I would advise applying xsl conversion.

-2
source

All Articles