If someone else sends me a dtd that I have to use, I have no choice. When I have a choice, I can feed any data structure into the PEAR xml serializer, and unserializer on the other end, and get the same data structure back. Easy.

All the added complexity[1] of xml is the layers of validation to make sure you get the right data structure. If you don't need the validation you don't need to check the dtd.




[1] Other than attributes, which I think are a fundamentally broken idea.