I have never benchmarked different representations but I expect that using a tree representation in the language itself (such as I do currently in pubsub using classes and methods) is the fastest of all (pure python) alternatives. So why not create a converter that converts the in-memory XML element tree to the class structure that TopicDefnProvider expects? In fact I believe there is already some scafolding in pubsub to do this: I vaguely remember an ITopicDefnProvider interface (don't have the code handy) in core, your constructor would take the xml and create the class structure.
I'm curious to hear how that goes so please keep me posted!