ElementTree and namespaces in the header only

Fredrik Lundh fredrik at pythonware.com
Tue Jan 15 18:22:29 CET 2008

Peter Bengtsson wrote:

> root = Element('feed', xmlns='http://www.w3.org/2005/Atom')
> root.set('xmlns:se', NS_URL)
> entry = SubElement(root, 'entry')
> SubElement(root, 'title').text = 'Title'
> SubElement(entry, SEN('category')).text = 'Category'

> But surely the xmlns:se attribute on the <se:category> tag is
> excessive since the namespace (by the URI) is already defined in the
> <feed> tag. How do I set non-default namespace tags in elements
> without the automatic xmlns:se attribute repeated each time?

ET 1.2's standard serializer doesn't take explicitly set namespaces into 
account.  If you want full control over namespace generation, you have 
to do it yourself:


ET 1.3 provides a default_namespace option for this specific case (but 
you still have to use universal names for everything that should go into 
the default namespace).


More information about the Python-list mailing list