Как спарсить значения из xml документа
Вот содержимое xml документа
<?xml version="1.0"?>
<Filename version="0.0.0.1" platform="windows">
<Settings>
<Setting name="Use proxy">ON</Setting>
....
<Tabs>
<Tab selected="1">
<LocalPath>C:\Users\admin\</LocalPath>
<Pass encoding="base64">Mjxs1XZPODqzv=</Pass>
</Tab>
</Tabs>
</Setting>
</Filename>
Как можно спарсить значения LocalPath и Pass encoding=
Попробовал из этого примера сделать так:
var doc = new XmlDocument();
doc.Load("ProxyViewer.xml");
var bookNodes = doc.SelectNodes("//Tabs/Tab selected=\"1\"");
foreach (XmlNode item in bookNodes)
{
string locPath = item.SelectSingleNode("./LocalPath").InnerText;
string pass = item.SelectSingleNode("./Pass encoding=").InnerText;
Console.WriteLine("locPath {0} pass: {1}",locPath, pass);
}
Но оно не находит
Ответы (1 шт):
Автор решения: Yitzhak Khabinsky
→ Ссылка
Как уже упоминалось в комментарии @EvgeniyZ, лучше использовать LINQ to XML API. Он доступен в .Net Framework с 2007 года.
c#
void Main()
{
const string filePath = @"e:\Temp\ProxyViewer.xml";
XDocument xdoc = XDocument.Load(filePath);
string selected = "1";
var xelem = xdoc.Descendants("Tab")
.Where(x => x.Attribute("selected").Value.Equals(selected));
Console.WriteLine("locPath: '{0}', pass: '{1}'"
, xelem.Elements("LocalPath").FirstOrDefault()?.Value
, xelem.Elements("Pass").FirstOrDefault()?.Value);
}
Результат
locPath: 'C:\Users\admin\', pass: 'Mjxs1XZPODqzv='