Parsing XML: SAX, DOM, Expat, or Something Else?

A

aha

Hello All,
I've been charged with developing an XML configuration file format,
for one of the applications that my company develops. (Yes, I know it
would have been easier to just use the configuration file format as
described in RFC 822) While I am finally comfortable with the XML
description that we've agreed upon; I am still trying to determine the
best XML parser API to use. I would love to use XPATH, however I face
the following restriction:

The Python scripts that perform the parsing of the XML configuration
file must be compatible with Python Versions 2.2-present.

This means that any functionality that I use needs to be compatible
with Python 2.2.

I started with the DOM API in xml.dom.minidom and I thought that it
might be the best way to go, but then I ran across the Recipes of Wai
Yip Tung

http://code.activestate.com/recipes/534109/


and John Bair, Christoph Dietze from the second edition of the Python
cookbook.

Wai's implementation uses thes SAX parser and John and Christoph's
implementation uses Expat API.

In the end what I really want is to transform the XML

<config>
<component>
<setting></setting>
</component>
</config>

into an object that looks like

config.component.setting or a map config[component][setting].

Another restriction is that I don't want to have to ship additional
modules.

Does anyone have any advice, comments, or HELP???

Aquil H. Abdullah
Developer
 
C

Chris Rebert

Hello All,
I've been charged with developing an XML configuration file format,
for one of the applications that my company develops. (Yes, I know it
would have been easier to just use the configuration file format as
described in RFC 822) While I am finally comfortable with the XML
description that we've agreed upon; I am still trying to determine the
best XML parser API to use. I would love to use XPATH, however I face
the following restriction:

The Python scripts that perform the parsing of the XML configuration
file must be compatible with Python Versions 2.2-present.

This means that any functionality that I use needs to be compatible
with Python 2.2.

I started with the DOM API in xml.dom.minidom and I thought that it
might be the best way to go, but then I ran across the Recipes of Wai
Yip Tung

http://code.activestate.com/recipes/534109/


and John Bair, Christoph Dietze from the second edition of the Python
cookbook.

Wai's implementation uses thes SAX parser and John and Christoph's
implementation uses Expat API.

In the end what I really want is to transform the XML

<config>
<component>
<setting></setting>
</component>
</config>

into an object that looks like

config.component.setting or a map config[component][setting].

Another restriction is that I don't want to have to ship additional
modules.

Does anyone have any advice, comments, or HELP???

ElementTree is in the std lib for Python 2.5+ and has a fairly
Pythonic API compared to SAX/DOM.
Docs for it: http://docs.python.org/library/xml.etree.elementtree.html

Cheers,
Chris
 
S

Stefan Behnel

Chris said:
I've been charged with developing an XML configuration file format,
for one of the applications that my company develops.
[...]
I am still trying to determine the
best XML parser API to use. I would love to use XPATH, however I face
the following restriction:

The Python scripts that perform the parsing of the XML configuration
file must be compatible with Python Versions 2.2-present.

ElementTree is in the std lib for Python 2.5+ and has a fairly
Pythonic API compared to SAX/DOM.
Docs for it: http://docs.python.org/library/xml.etree.elementtree.html

The downloadable package (version 1.2.x) still works with Python 2.2 (last
I heard, at least). ET also has simple support for XPath-like expressions
(without conditions, that is). Starting to use it now will however allow
you to switch to the mostly compatible lxml.etree package once you decide
to move on to Python 2.3 or later. lxml has full support for XPath (and
XSLT and tons of other goodies).

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

Forum statistics

Threads
474,260
Messages
2,571,038
Members
48,768
Latest member
first4landlord

Latest Threads

Top