XmlReader is such a horrible design!! I've been trying to implement SerializeTo/FromXML methods for a hierarchy of objects.. XmlWriter is pretty easy, and it delegates nicely from one object to the next. XmlReader, on the other hand is a completely different beast. I wasn't able to come up with a use pattern that accounts for different possible situations (like empty elements, etc.) All "book" examples are trivial and they only work with one single input. Anyway, it's very frastrating.