The Discussion

I'm afraid that Alvin Ashcraft's test is fatally flawed. Using XMLDocument, the most
efficient way to stream information is using the FileStream and not MemoryStream library.

Linq's disadvantage is that you have to load all the data into memory before you can perform actions upon the data. Using XMLDocument properly you would copy the data node by node, this would trounce Linq 365 days a year.

If you've looked at the test though, it doesn't test streaming XML from a filestream, instead it tests building an in-memory XML document dynamically. That's not to take away from your point, it's just that the test is only for in-memory XML document creation.

It would be great if you could build your own micro-performance benchmark on loading XML from a filestream to see the performance advantages/disadvantages of XMLDocument vs XElement (and probably XMLTextReader which I would think should be
the fastest).

I stand corrected I meant XMLTextReader. One of the first commercial applications I wrote did just this, and I opted for the lower level API's because it was processing XML data via webservices so loading data was not an option (XML files with lots of
orders)

I wish I had the time to test this at present, but the XML team have these
blogs that some people may find useful. I must add if I was faced with doing any XML stuff today, I'd still head straight for the base class I/O libraries, as I don't find them that difficult now.