В настоящее время я работаю над проектом, в котором файл xml должен быть прочитан для параметров программы.Чтение определенного параметра XML
XML-выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<!-- Settings for Modul1 -->
<root>
<Program-Config>
<Parameter>Name</Parameter>
<Value>John</Value>
</Program-Config>
<Program-Config>
<Parameter>Device</Parameter>
<Value>TV</Value>
</Program-Config>
.
.
.
</root>
Эта структура также используется для заполнения DataGridView так:
Parameter | Value
__________|______
Name | John
Device | TV
Это работает, и я могу сохранить изменения, внесенные в XML файл.
Однако моя проблема в том, что мне нужно прочитать конкретный элемент XML-файла, и все же он не работает так хорошо.
Мой код:
string dir;
dir = Directory.GetCurrentDirectory() + "\\config.xml";
XDocument xDoc = XDocument.Load(dir);
var xmlStr = File.ReadAllText(dir);
var str = XElement.Parse(xmlStr);
var result = str.Elements("Program-Config").
Where(x => x.Element("Parameter").Value.Equals("Device")).ToList();
for (int i = 0; i <= result.Count - 1; i++)
{
Console.WriteLine(result[i].Value);
}
Но то, что он пишет в консоли: DeviceTV. Но мне нужно: TV
Это используется как строка/int для других частей программы.
Может ли кто-нибудь помочь мне с этим?
Это может быть случай, когда xDocument xDoc = XDocument.Load (dir) является избыточным и оставленным от разного подхода, который я пробовал. – SUM
Я использовал ваше второе решение с xDoc, и оно работает. Чего вы очень! Для меньшего xml-файла это так, как я хочу. Может быть, когда у меня есть больший файл с большим количеством параметров для чтения, мне нужно немного изменить его, поэтому мне не нужно жестко кодировать каждый запрос параметра. – SUM