2010-04-29 48 views
1

我需要加載一個XML文檔到我的Dictionary<string,string> object加載一個XML,但對於asp.net 2.0

XML的樣子:

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

我怎樣才能做到這一點使用XmlDocument的?

我想要可讀性,我發現XmlReader很難讀取B/C你必須保持檢查節點類型。

+0

什麼是關鍵和單字典條目的價值是什麼? – 2010-04-29 21:09:08

+0

key = id,值是'text'節點。 – Blankman 2010-04-30 13:06:09

回答

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); 
+2

當然,除了那個是3.5框架的部分,他還希望2.0 ... – GalacticCowboy 2010-04-29 21:14:37

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();