Saving XML files using ElementTree Saving XML files using ElementTree python python

Saving XML files using ElementTree


In order to avoid the ns0 prefix the default namespace should be set before reading the XML data.

ET.register_namespace('', "http://www.topografix.com/GPX/1/1")ET.register_namespace('', "http://www.topografix.com/GPX/1/0")


You need to register all your namespaces before you parse xml file.

For example: If you have your input xml like thisand Capabilities is the root of your Element tree.

<Capabilities xmlns="http://www.opengis.net/wmts/1.0"    xmlns:ows="http://www.opengis.net/ows/1.1"    xmlns:xlink="http://www.w3.org/1999/xlink"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:gml="http://www.opengis.net/gml"    xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd"    version="1.0.0">

Then you have to register all the namespaces i.e attributes present with xmlns like this:

ET.register_namespace('', "http://www.opengis.net/wmts/1.0")ET.register_namespace('ows', "http://www.opengis.net/ows/1.1")ET.register_namespace('xlink', "http://www.w3.org/1999/xlink")ET.register_namespace('xsi', "http://www.w3.org/2001/XMLSchema-instance")ET.register_namespace('gml', "http://www.opengis.net/gml")


It seems that you have to declare your namespace, meaning that you need to change the first line of your xml from:

<ns0:trk>

to something like:

<ns0:trk xmlns:ns0="uri:">

Once did that you will no longer get ParseError: for unbound prefix: ..., and:

elem.tag = elem.tag[(len('{uri:}'):]

will remove the namespace.