Я должен загрузить XML-документ в мой Dictionary<string,string> object
.
XML похож:
<nodes>
<node id="123">
<text>text goes here</text>
</node>
</nodes>
Как я могу сделать это использование XmlDocument?
Я хочу удобочитаемость по производительности, и я нахожу, что XmlReader тверд считать b/c, необходимо продолжать проверять тип узла.
Что ж, есть причина, по которой синтаксический анализ 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();
Предполагая, что ID является ключом, а значение узла
является значением, вы можете использовать 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);