Загрузка XML, но для asp.net 2.0 - PullRequest
1 голос
/ 30 апреля 2010

Мне нужно загрузить XML-документ в мой Dictionary<string,string> object.

XML выглядит так:

<nodes>
<node id="123">
   <text>text goes here</text>
</node>
</nodes>

Как я могу сделать это с помощью XmlDocument?

Я хочу, чтобы читабельность превышала производительность, и я нахожу, что XmlReader трудно читать, потому что вам нужно постоянно проверять тип узла.

Ответы [ 2 ]

1 голос
/ 30 апреля 2010

Что ж, есть причина, по которой синтаксический анализ XML улучшился с 2.0, но если вы просто хотите получить образец, который анализирует этот фрагмент без использования XmlReader, это должно работать. Я уверен, что есть другие способы сделать это:

XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<nodes><node id=""123""><text>text goes here</text></node><node id=""321""><text>more text goes here</text></node></nodes>");

foreach (XmlNode nodes in doc.GetElementsByTagName("nodes"))
{
    foreach (XmlNode node in nodes.ChildNodes)
    {
        XmlNodeList list = node.SelectNodes("text");
        if (list.Count > 0)
        {
            Console.Write("{0}='{1}'\n", node.Attributes["id"].Value, list[0].InnerText);
        }
    }
}
Console.WriteLine("Done.");
Console.ReadKey();
1 голос
/ 30 апреля 2010

Предполагая, что ID является ключом, а значение узла <text> является значением, вы можете использовать LINQ:

XDocument xDoc;
using(StringReader sr = new StringReader("thexml"))
{
    xDoc = XDocument.Load(sr);
}
myDictionary = xDoc.Descendants("node").ToDictionary(x => x.Attribute("id").Value, x => x.Descendants("text").First().Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...