Есть преимущества и недостатки использования одного способа по сравнению с другим.
Если вы ищете способ обойти XML вперед, назад и получить произвольный доступ к различным элементам, я бы использовал XmlDocument.
(при условии, что ваш XML может быть в строке)
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlVariable);
Тогда вы можете использовать что-то вроде:
XmlNodeList xmlNodes = doc.SelectNodes(xPathString);
Google о XPath, и вы найдете несколько замечательных статей о том, как добраться до определенного элемента в вашем документе, а затем вы можете просмотреть его следующим образом:
foreach(XmlNode node in xmlNodes)
{
// do something with node.InnerText or any other property/method that you like
// also through this method you can access the attributes of each node
// allowing you to process that last LOCATION elements attributes
}
Если ваш xml-файл находится где-то в файле, вы можете загрузить его через doc.Load (имя файла) или по своему выбору объекта потока.
Теперь, если вы будете анализировать только один раз, а строка XML огромна, я предлагаю StringReader / XmlReader, так как они НАМНОГО быстрее, потому что они «только вперед». Возможно, это не точная терминология, но она сокращает использование памяти, поскольку не нужно хранить весь документ сразу.