2010-04-29 3 views
1

Dictionary<string,string> object에 XML 문서를로드해야합니다.XML을로드하지만 asp.net 2.0 용

XML은 다음과 같습니다

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

I이 사용 된 XmlDocument를 할 수 있습니까?

성능이 가독성이 좋기를 바란다. XmlReader가 b/c를 읽기가 어려울 때 노드 유형을 계속 확인해야한다.

+0

단일 사전 항목의 핵심은 무엇이며 어떤 가치가 있습니까? –

+0

key = id, 값은 '텍스트'노드입니다. – Blankman

답변

1

가정 ID는 키와, 당신은 LINQ 값을 사용할 수있는 <text> 노드의 값입니다

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

1

글쎄, 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();