ElementTree Namespace Prefixes

Chris Spencer usenet.20.evilspam at spamgourmet.com
Sun Jun 12 13:55:00 EDT 2005


Andrew Dalke wrote:
> On Sun, 12 Jun 2005 15:06:18 +0000, Chris Spencer wrote:
> 
> 
>>Does anyone know how to make ElementTree preserve namespace prefixes in 
>>parsed xml files?
> 
> 
> See the recent c.l.python thread titled "ElemenTree and namespaces"
> and started "May 16 2:03pm".  One archive is at
> 
> http://groups-beta.google.com/group/comp.lang.python/browse_thread/thread/31b2e9f4a8f7338c/363f46513fb8de04?&rnum=3&hl=en

Thanks, although that thread didn't seem to resolve the issue. All the 
first few links talk about is how to hack your own parser to make sense 
of the Clark notation.

The problem at hand is with how Elementtree outputs namespaces and 
represents the tag name in memory.

Given xml with no namespaces, Elementtree works perfectly. However, if 
you give the root tag an xmlns attribute, Elementtree relabels all child 
nodes with it's own prefix, completely defeating the purpose of the 
default namespace. In my opinion, this is unacceptable behavior.

If an XML parser reads in and then writes out a document without having 
altered it, then the new document should be the same as the original. 
With Elementtree this isn't so. Lundh apparently believes he knows 
better than you and I on how our namespaces should be represented.

It's a shame the default ns behavior in Elementtree is in such a poort 
staten. I'm surprised no one's forked Elementtree solely to fix this issue.

Anyways, Python's native minidom works as expected, so I'll probably use 
that instead, even if the api is slightly less intuitive.

Chris



More information about the Python-list mailing list