XML файл в словарь с вложенным словарем - PullRequest
1 голос
/ 01 октября 2010

Я пытаюсь прочитать содержимое файла XML, используя XmlTextReader в C #, который имеет следующую структуру:

<root>
  <person id="0">
    <a1>val</a1>
    <a2>val</a2>
  </person>
  <person id="1">
    <a1>val</a1>
    <a2>val</a2>
  </person>
</root>

Я хочу прочитать файл во вложенном словаре:

Dictionary<string, Dictionary<string, string>> xmldata = new Dictionary<string, Dictionary<string, string>>();

Надеясь произвести:

xmldata = {0 => {a1 => val, a2 => val}, 1 => {a1 => val, a2 => val}}

Вопросы:

1) Не уверен, что это лучший метод для хранения прочитанных XML-данных, я был бы лучше с

<a x="1"></a><a x="2"></a>

например?
2) Наличие нескольких проблем с успешным заполнением соответствующих словарей

1 Ответ

1 голос
/ 01 октября 2010

Вы хотите использовать LINQ-to-XML для всех вещей XML в .NET:

var doc = XDocument.Parse(@"<root>
  <person id=""0"">
    <a1>val</a1>
    <a2>val</a2>
  </person>
  <person id=""1"">
    <a1>val</a1>
    <a2>val</a2>
  </person>
</root>");

var result = doc.Root
                .Elements()
                .ToDictionary(
                    e => e.Attribute("id"),
                    e => e.Elements()
                          .ToDictionary(
                              f => f.Name.LocalName,
                              f => f.Value));

Конструкции вложенных словарей, как если бы result был создан следующим образом:

var result = new Dictionary<string, Dictionary<string, string>>
{
    { "0", new Dictionary<string, string> { { "a1", "val" }, { "a2", "val" } } },
    { "1", new Dictionary<string, string> { { "a1", "val" }, { "a2", "val" } } },
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...