2009-05-01 2 views
1

xmltextreader를 사용하여 어떻게 해시 테이블을로드 할 수 있습니까?xmltextreader를 사용하여 간단한 xml 파일에서 해시 테이블을로드하는 방법

XML :

<base><user name="john">2342343</user><user name="mark">239099393</user></base> 

이 전에 질문을 받았다 그러나 나는 완전히 아직 편안하지 않다 펑키 LINQ를 사용했다.

+0

LINQ to XML은 거의 확실하게 가장 쉬운 경로가 될 것입니다. LINQ가 아닌 솔루션을 찾고 계십니까? –

+0

XMLSerializer는 어떻습니까? XLINQ보다 쉽지 않을까요? –

답변

2

글쎄, LINQ to XML 솔루션은 정말 쉽기 때문에 좀 더 복잡한 솔루션을 만드는 대신에 LINQ to XML 솔루션을 사용하는 것이 편합니다. 다음은 모두 한 번에이 작업을 수행 할 수 물론

// Load the whole document into memory, as an element 
XElement root = XElement.Load(xmlReader); 

// Get a sequence of users 
IEnumerable<XElement> users = root.Elements("user"); 

// Convert this sequence to a dictionary... 
Dictionary<string, string> userMap = users.ToDictionary(
     element => element.Attribute("name").Value, // Key selector 
     element => element.Value);     // Value selector 

... 설명 듬뿍 코드 - 그리고 나는 아마 두 번째와 세 번째 문장을 결합하는 것입니다. 그러나 그것은 개념적으로 단순한 것만 큼 쉽습니다. 사용자 요소에 이름이 없다는 가능성을 감안하여 오류 처리를 넣고 싶다면 더 복잡해집니다. (이 코드는이 경우 NullReferenceException을 던집니다.)

키와 이름을 값으로 사용한다고 가정합니다. 해시 테이블을 다른 방법으로 원한다면 람다 식의 순서를 바꾸면됩니다.

+0

음 ... 'ToDictionary (..)에 대한 정의 또는 확장 메서드가 포함되어 있지 않습니다'라는 메시지가 표시됩니까? asp.net 4.0 사용 – Blankman