> The last line of p() calls itself: it is an unconditional recursive call > so, no matter what it does, it will never stop. And since p() also > prints something, calling it will print endlessly.
Sorry, I wasn't clear. I realize that this recurses endlessly. The problem is that it also adds blank lines endlessly. > By removing this line, you get something like: > > <?xml version="1.0" ?> > <a> > <b> > <c/> > </b> > </a> > > That seems sensible, imo. Was that what you wanted? Sure. That's fine unless you then re-parse this out put and print it again in which case you get the behaviour you describe: > An additional thing to keep in mind is that toprettyxml does not print > an XML identical to the original DOM tree: it adds newlines and tabs. > When parsed again these blank characters are inserted in the DOM tree as > character nodes. If you toprettyxml an XML document twice in a row, then > the second one will also add newlines and tabs around the newlines and > tabs added by the first. Since you call toprettyxml an infinite number > of times, it is expected that lots of blank characters appear. Right. That's the behaviour I'm asking about, which I consider to be problematic. I would expect a module providing a parser and pretty- printer (not just for XML parsers) to be able to conservatively round- trip. As far as I can see (and your comments back this up) minidom doesn't have this property. Unless anyone knows how to get it to behave that way... Ben -- http://mail.python.org/mailman/listinfo/python-list