There's nothing wrong with making XML with code like:

ts.writeline("<name property=""smack"">smack smack</name>")

Nor is there anything really wrong with well-written text stream parsing code that reads and expects a certain flavor of XML to read in. You can still gain all of the extensibility of XML without making code that's overkill.

A crazied Perl hacker can quickly understand and write a particular type of XML (ie, one DTD's worth) and still not worry about understanding files created by extended versions in the future. As long as the original DTD's conventions are still followed, you've got great code -- and having it all in randmo objects flying all over the place that you're code has a hard time dealing with doesn't help much anyhow.