C# 加载XML,但对于asp.net 2.0

C# 加载XML,但对于asp.net 2.0,c#,asp.net,xmldocument,C#,Asp.net,Xmldocument,我需要将XML文档加载到我的字典对象中 XML看起来像: <nodes> <node id="123"> <text>text goes here</text> </node> </nodes> 这里有文字 如何使用XmlDocument实现这一点 我希望可读性优于性能,我发现XmlReader很难阅读b/c。您必须不断检查节点类型。假设ID是键,并且节点的值是值,您可以使用LINQ: XDocument xDo

我需要将XML文档加载到我的
字典对象中

XML看起来像:

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

这里有文字
如何使用XmlDocument实现这一点


我希望可读性优于性能,我发现XmlReader很难阅读b/c。您必须不断检查节点类型。

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

自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();
XmlDocument doc=新的XmlDocument();
LoadXml(@“文本在此显示更多文本在此显示”);
foreach(doc.GetElementsByTagName(“节点”)中的XmlNode节点)
{
foreach(nodes.ChildNodes中的XmlNode节点)
{
XmlNodeList=node.SelectNodes(“文本”);
如果(list.Count>0)
{
Write(“{0}='{1}'\n”,node.Attributes[“id”]。Value,list[0]。InnerText);
}
}
}
控制台。WriteLine(“完成”);
Console.ReadKey();

单个字典条目的键和值是什么?key=id,值是“text”节点。当然,除了3.5框架和他想要2.0的部分。。。