Skip to content Skip to sidebar Skip to footer

Remove Element In A Xml File With Python

I'm a newbie with Python and I'd like to remove the element openingHours and the child elements from the XML. I have this input

Solution 1:

I took your code for a spin but at first Python couldn't agree with the way you composed your XML, wanting the / in the closing tag to be at the beginning (like </...>) instead of at the end (<.../>).

That aside, the reason your code isn't working is because the xpath expression is looking for the attributeopeningHour while in reality you want to look for elements called openingHours. I got it to work by changing the expression to //openingHours. Making the entire code:

from lxml import etree

doc=etree.parse('stations.xml')
for elem in doc.xpath('//openingHours'):
    parent = elem.getparent()
    parent.remove(elem)
print(etree.tostring(doc))

Solution 2:

You want to remove the tags <openingHours> and not some attribute with name openingHour:

from lxml import etree

doc = etree.parse('stations.xml')
for elem in doc.findall('.//openingHours'):
    parent = elem.getparent()
    parent.remove(elem)
print(etree.tostring(doc))

Post a Comment for "Remove Element In A Xml File With Python"