Сначала объявите списки для хранения значений:
using System.Collections.Generic;
List<string> keysList = new List<string>();
List<string> valuesList = new List<string>();
Тогда:
using System.Xml; // System.Xml.dll
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml); // Load(file)
var ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("tcm", "http://www.tridion.com/ContentManager/5.0");
ns.AddNamespace("xlink", "http://www.w3.org/1999/xlink");
foreach (XmlNode node in doc.SelectNodes("//*[local-name()=\"Key\"]"))
{
keysList.Add(node.InnerText);
}
foreach (XmlNode node in doc.SelectNodes("//*[local-name()=\"Value\"]"))
{
valuesList.Add(node.InnerText);
}
если вам не нужен XML DOM, только XPath для оценки:
using System.Xml.XPath; // System.Xml.dll
XPathDocument doc = null;
using (TextReader reader = new StringReader(xml))
{
doc = new XPathDocument(reader); // specify just path to file if you have such one
}
XPathNavigator nav = doc.CreateNavigator();
foreach (XPathNavigator node in (XPathNodeIterator)nav.Evaluate("//*[local-name()=\"Key\"]"))
{
keysList.Add(node.Value);
}
foreach (XPathNavigator node in (XPathNodeIterator)nav.Evaluate("//*[local-name()=\"Value\"]"))
{
valuesList.Add(node.Value);
}