I'm trying to read through a 2.5GB XML file and delete certain nodes, lets say, the "CD" elements and the "DVD" elements. Currently I'm doing something like this:\[code\]using (XmlReader reader = XmlReader.Create("file.xml")){ DeleteElements(reader.ReadElements("CD")); DeleteElements(reader.ReadElements("DVD")); // reader returns 0 elements}\[/code\]Note: \[code\]DeleteElements\[/code\] just loops these elements and removes them from the document, but that's mostly unimportant for the purposes of this question.Currently I find that no "DVD" element are retrieved. If you've worked with \[code\]XmlReader\[/code\] that much before, I'm sure you can figure the cause of the problem here: after the reader reads the document for "CD" nodes, the reader doesn't find any "DVD" elements because the reader is at the end of the document.Considering the large size of the XML file, and the number of elements I'm trying to retrieve, I can't load the entire document into memory because you'd get a \[code\]OutOfMemoryException\[/code\] - this means no XDocument or XPathDocument goodness.Is there any way to get XmlReader to return both "CD" and "DVD" as it reads through the document? Loading the document initially is quite time consuming, so I don't want to do this multiple times. Something awesome like \[code\]reader.ReadElements("DVD|CD")\[/code\] would be sweet.