我需要加載一個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你必須保持檢查節點類型。
我需要加載一個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你必須保持檢查節點類型。
假設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);
當然,除了那個是3.5框架的部分,他還希望2.0 ... – GalacticCowboy 2010-04-29 21:14:37
嗯,就是因爲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();
什麼是關鍵和單字典條目的價值是什麼? – 2010-04-29 21:09:08
key = id,值是'text'節點。 – Blankman 2010-04-30 13:06:09