加载XML,但是对于asp.net 2.0

时间:2010-04-29 21:06:13

标签: c# asp.net xmldocument

我需要将XML文档加载到Dictionary<string,string> object

XML看起来像:

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

如何使用XmlDocument执行此操作?

我希望可读性高于性能,并且我发现难以读取XmlReader b / c你必须继续检查节点类型。

2 个答案:

答案 0 :(得分:1)

假设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);

答案 1 :(得分:1)

嗯,自2.0以来XML解析有所改进是有原因的,但是如果你只想要一个不使用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();