(sorry for taking so long to reply, I've been sidetracked by other things.....)
While trying to prepare a concise example and trace through everything, I was able to figure out the problem - I was using as_list(). Turns out that as_list() has a parameter "datetime_as_str" which defaults to True - as a result, my xml was converted to string upon calling as_list() (as soon as I got it from the database), and no converter was used. I think it's a good idea to add it to the "as_list()" and "as_dict()" documentation in Chapters 6 and 9 of the book where it is mentioned. As far as I Can tell, the only location it is documented is in the epydoc/source http://www.web2py.com/examples/static/epydoc/web2py.gluon.dal.Rows-class.html#as_list (Note also that the :param definition is not being properly parsed by epydoc) For me it was very confusing and unexpected - when otherwise py2web is a very "principle of least surprise" kind of framework. I would not have expected this formatting to happen at all, and if it does happen, to be done using the represent=... field. Thanks again for web2py, it is awesome!

