See the question and my original answer on StackOverflow

doc.SelectSingleNode("//body"); doesn't work because body is declared in a specific namespace "", so to query for it you could code it like this:

var mgr = new XmlNamespaceManager(new NameTable());
mgr.AddNamespace("whatever", "");
var node = doc.SelectSingleNode("//whatever:body", mgr);

doc.LastChild["body"]; works because the implementation supports it, but you could use it like this to avoid ambiguities:

doc.LastChild["body", ""]