ElementTree XML Namspace

H

Hunter

We are reviewing a vendor who will output some data in an XML format.
I will then use python to convert the data to another format for
upload to another vendor. I'm having trouble with very basic steps
with the sample file they sent me.

My very simple test script is:

from xml.etree.ElementTree import parse
tree = parse("sample.xml")
print tree.findtext("invoice_batch/batch_id/")

When I apply this to a very concatenated sample.xml with namespace (as
they send it to me)
<invoice_batch_generic xmlns="http://tempuri.org/
invoice_batch_generic.xsd">
<invoice_batch>
<batch_id>1</batch_id>
</invoice_batch>
</invoice_batch_generic>
The result I get is "None".

When I apply this to the same file with the namespace removed
<invoice_batch_generic>
<invoice_batch>
<batch_id>1</batch_id>
</invoice_batch>
</invoice_batch_generic>
The result is "1" which is what I would expect.

This is obviously just the very first step of what will be a much
larger process. The actual XML file is several pages long. I'm using
Python 2.5.2 (activestate) on Windows Vista.

I'm new to Python and newer to XML. So what am I missing? What am I
doing wrong?

Thanks --Joshua
 
S

Stefan Behnel

Hunter said:
We are reviewing a vendor who will output some data in an XML format.
I will then use python to convert the data to another format for
upload to another vendor.

Take a look at lxml.objectify, it has a nicer API, especially if you are new
to XML. It also handles loads of namespace issues under the hood, so that you
don't get bothered with them.

http://codespeak.net/lxml/objectify.html#element-access-through-object-attributes
http://codespeak.net/lxml/objectify.html#namespace-handling

You said "reviewing". Does that indicate that you need validation?

http://codespeak.net/lxml/validation.html
http://codespeak.net/lxml/objectify.html#asserting-a-schema

Stefan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,999
Messages
2,570,243
Members
46,838
Latest member
KandiceChi

Latest Threads

Top