[Doc-SIG] How to traverse a document object

Paul Moore gustav@morpheus.demon.co.uk
Mon, 22 Oct 2001 20:45:18 +0100


I don't know if I'm missing something stupidly obvious here... I want to
traverse a document generated by a dps.parsers.restructuredtext.Parser
instance. I can see no way of doing so short of a manual tree-walk with
type checks all the way - you know::

    if type(current_node) =3D=3D section:
        # process a section, probably recursing on its children
    elif type(current_node) =3D=3D paragraph:
        # process a paragraph
    # etc, ad nauseam.

This *can't* be the correct way of doing this. The example code in the
tools directory isn't any help, as it builds on the asdom() method,
which does the trick "for free".

I tried looking at the xml.dom module, but that didn't offer anything
that immediately leapt out at me as a suitable "visitor" interface. But
I'm not familiar with XML, so I'm probably missing something.

But IMHO, there *must* be a simple way of traversing the document model.
At the moment, I can't see it. Can someone enlighten me? (Or if there
isn't one, surely it needs implementing - and as it may well need
support from the classes in nodes.py, I'd imagine it needs adding sooner
rather than later?)

As I say, I'm convinced I've missed something fundamental here...
Paul.