Как получить имя атрибута и значение Elemnt с помощью XDocument

В настоящее время я работаю над приложением ASP.NET Web Forms и.NET 4.0. У меня нет предыдущего опыта работы с XML в.NET. Я создал этот очень простой XML-документ, из которого я хочу извлечь атрибуты с соответствующими данными:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <DataTable>
    <Filter>true</Filter>
    <DropDown>true</DropDown>
  </DataTable>  
</configuration>

И я пытаюсь этот код:

var path = HttpContext.Current.Server.MapPath("/XML/Settings.xml");
XDocument xdoc = XDocument.Load(path);

IEnumerable<XElement> xnodes = xdoc.Root.Elements("DataTable");

List<string> list = new List<string>();

foreach (XElement xnn in xnodes)
{
   list.Add(xnn.Value);
}

что приводит к одному элементу в моем List со значением truetrue, Я знаю, что здесь я не пытаюсь получить как имя атрибута, так и содержимое внутри него, но в целом это то, что я хочу сделать, так как я могу это сделать?

3 ответа

Решение

Здесь нет атрибута. Я думаю, что вы хотите словарь, где ключи являются имена элементов, а значения являются значениями элементов

var dictionary = xdoc.Root.Elements("DataTable").Elements()
               .ToDictionary(x => x.Name.LocalName, x => (string)x)

Вы можете получить все элементы в качестве словаря

 var dictionary = xdoc.Descendants().
     ToDictionary(x => x.Name.LocalName, x => x.Value)

Ты пытался использовать XmlConvert.ToBoolean() функционировать?

Также я бы предпочел использовать синтаксис Linq при работе с файлами XML.

Другие вопросы по тегам