ジョン・スキートの記事より。
すべてをメモリに読み込める場合は、XDocument を使用してください。それはあなたの人生をずっと楽にしてくれます。LINQ to XML は素敵な API です。
基本的に、巨大な XML ファイルをストリーミング形式で処理する必要がある場合は、XmlReader (XmlTextReader など) を使用します。これははるかに手間のかかる API ですが、ストリーミングが可能です (つまり、必要なときにのみデータを処理するため、巨大なドキュメントを処理し、一度に少量のメモリしか使用できません)。
ただし、ハイブリッド アプローチがあります。小さな要素で構成される巨大なドキュメントがある場合は、要素の先頭に配置された XmlReader から XElement を作成し、LINQ to XML を使用して要素を処理し、XmlReader を次の要素とやり直します。
ジョン・スキートの説明
Check the Example below
// Create a DOM document with some content.
XmlDocument doc = new XmlDocument();
XmlElement child = doc.CreateElement("Child");
child.InnerText = "child contents";
XmlElement root = doc.CreateElement("Root");
root.AppendChild(child);
doc.AppendChild(root);
// Create a reader and move to the content.
using (XmlNodeReader nodeReader = new XmlNodeReader(doc)) {
// the reader must be in the Interactive state in order to
// Create a LINQ to XML tree from it.
nodeReader.MoveToContent();
XElement xRoot = XElement.Load(nodeReader);
Console.WriteLine(xRoot);
}
これは単なる例です。同様のことを試してください。