Every other programming language that I can think of uses libxml2 to provide its XML support. It is an extremely comprehensive cross-platform binary library which is still being actively developed. Therefore, I really can't think of any good reason not to use it exclusively. With this strategy, the tool that you use to read the file is probably the exact same tool that produced it.