XML vs Python?
Paul Boddie
paul at boddie.net
Fri Jan 17 05:57:38 EST 2003
"N. Thomas" <nthomas at cise.ufl.edu> wrote in message news:<slrnb293jk.1hr.nthomas at rain.cise.ufl.edu>...
> ...or rather "XML's data structures vs Python's data structures"
[...]
> Are there any issues that I should be aware of regarding this? I mean,
> are there situations where is it better to save one's data in XML
> internally as opposed to using the language's native structures, and
> exporting to/from XML?
Before the XML heavyweights get in on this, I would make the following points:
* A lists and dictionaries approach certainly has its merits:
speed (at least according to the PyRXP people), familiarity,
interoperability with other Python stuff.
* Once you start to look into more advanced features, it would
seem to me that the lists and dictionaries model approaches
such a level of complexity that a "proper" object model would
be better. That is because you would need to find more
efficient ways (in terms of expression) of requesting an
attribute with a given namespace, for example, than examining
raw dictionaries. Certainly, it appears to me that...
attr = element.getAttributeNS(some_namespace, some_name)
...is more obvious than...
attr = element[some_namespace][some_name]
...especially if it's hidden in lots of heavy XML processing
code.
* You could write your own object model. Frederik Lundh's
ElementTree is like this. I'm not 100% convinced that it's
beneficial to drop a standard object model that is widely
understood for another which is more Pythonic, although this
is a tradeoff that might be appropriate for some situations.
* If someone were to write an XPath wrapper for PyRXP and
similar packages, many standards issues would be less of a
concern. However, those wishing a "Pythonic" experience
arguably wouldn't benefit from XPath, and that experience
would obviously no longer be a motivation for XPath users
of such packages (since the nice Pythonic interface would
be ignored).
* If performance is a concern, libxml2 and cDomlette are
supposedly rather fast. I've never used the libxml2 bindings
for Python due to the lack of a PyXML-style DOM interface
until recently (I believe), but it's interesting that no
benchmark appears for it in the PyRXP benchmarks comparison
table:
http://www.reportlab.com/xml/pyrxp.html
Anyway, I hope this helps.
Paul
More information about the Python-list
mailing list