Hello all, I am working on my first twisted app which is a set of restful services that return xml to the consumers. When it comes to generating the XML it seems like there are a lot of solutions (i.e. building it manually using xml.dom.minidom, woven, nevow + stan, sux, microdom). I wanted to get an idea of what other twisted users think 1) is the most maintainable approach 2) what method has the most stable supporting libs and 3) is the fastest. On average the XML documents will be small but could potentially grow to a considerable size. Any comments or insights are appreciated. -Nick M.
On Monday 25 June 2007, Nicholas Milkovits wrote:
I am working on my first twisted app which is a set of restful services that return xml to the consumers. When it comes to generating the XML it seems like there are a lot of solutions (i.e. building it manually using xml.dom.minidom, woven, nevow + stan, sux, microdom). I wanted to get an idea of what other twisted users think
1) is the most maintainable approach
I would avoid anything that uses the DOM API, because it is very clumsy. You could use elementtree instead, which is bundled with Python from version 2.5 onwards. For my work project, I wrote something like Nevow's Stan, that uses nested Python expressions to build XML. It can use generators to create child nodes. The resulting code is quite readable, because the Python code structure matches the XML structure. Probably it would be useful to write the same small example program using all the APIs you're seriously considering and see how long and how readable the resulting code is.
2) what method has the most stable supporting libs and
elementtree is part of the Python library now, so it's likely to be around for a long time and not change a lot. Woven is no longer maintained, because Nevow replaced it. Nevow is popular, so it's also likely to be around for a long time, but it does change its APIs every now and then, as far as I know.
3) is the fastest.
The documents I generate are pretty small, so I haven't done much benchmarking. One thing you should avoid is repeatedly appending to a string. Instead, you can put string fragments in a list and join that at the end, or use StringIO. Bye, Maarten
participants (2)
-
Maarten ter Huurne
-
Nicholas Milkovits