Why does it fail cleaning GPX file?

Hello, I run this script to remove unneeded elements. For some reason, the input file is left as-is, when I try to get rid of the <metadata> block; If works as expected when I ignore that element. Any idea why? Thank you. ========== INPUT.GPX <?xml version="1.0" encoding="UTF-8"?> <gpx version="1.1" creator="GPSBabel - http://www.acme.com" xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <metadata> <time>2022-07-21T20:29:48.309Z</time> <bounds minlat="44.456597300" minlon="3.007453400" maxlat="45.803699000" maxlon="5.251047400"/> </metadata> <wpt lat="45.042569200" lon="5.040802200"> <name>way/4749044</name> <cmt>landuse=cemetery</cmt> <desc>landuse=cemetery</desc> <link href="http://osm.org/browse/way/4749044"/> </wpt> </gpx> ========== CLEAN.PY import lxml.etree as et from lxml import html #from xml.etree.ElementTree import XML, fromstring #import re import sys import os item= "input.gpx" BASENAME, EXTENSION = os.path.splitext(os.path.basename(item)) OUTPUTFILE = f"{BASENAME}.EDITED{EXTENSION}" PATH=os.path.dirname(os.path.abspath(item)) OUTPUT_FULLPATH=f"{PATH}\{OUTPUTFILE}" parser = et.XMLParser(remove_blank_text=True,strip_cdata=False) tree = et.parse(item,parser) root = tree.getroot() #=========== Remove blocks/elements #BAD for el in root.iter('cmt','desc','link','metadata'): #BAD for el in root.iter('metadata','cmt','desc','link'): #OK for el in root.iter('cmt','desc','link'): parent = el.getparent() parent.remove(el) #Write modified tree to new file tree.write(OUTPUT_FULLPATH, xml_declaration=True,pretty_print=True,encoding='UTF-8')
participants (1)
-
Gilles