2011-07-05 5 views
10

XML 파일을 사전으로 읽어야합니다.사전으로 XML 읽기

나는 가이드를 거의 읽지 않았고 이해할 수없는 이상한 단어 (예 : 노드, XML 유효성 검사 등) 만 혼동했다. 그래서, 나를 걸을 수 있을까요?

언급 한 바와 같이
<database> 
    <def number="1" name="one"/> 
    <def number="2" name="two"/> 
</database> 

, 나는 사전에 저장하려면 :

나는이 형식으로 기록되는 XML 파일이 있습니다. 나는 어떻게 그것에 대해 갈 것인가?

+2

이 질문과 대답은이 사이트를 너무 멋지게 만듭니다. 둘 다 +1. – neverseenjack

답변

14
var data = XElement.Parse(xml) 
    .Elements("def") 
    .ToDictionary(
     el => (int)el.Attribute("number"), 
     el => (string)el.Attribute("name") 
    ); 

이 :

  • 키로서 @number를 사용
  • 형태에게 사전 (<database>에서 시작)에 <def ...> 요소 위에
  • 로 반복 XElement로 XML을 파싱 (AN으로 해석 int)이고 값으로 @name (문자열)
  • 이이 d를 지정합니다. ictionary 내림차순 Dictionary<int,string>
7

내 용은 data으로 사용자의 질문은 기본적이지만 부적절하지는 않습니다. 걱정마. 네가해야 할 일을 설명 할게.

먼저 XML 파일 (디스크에있는 경우)을로드해야합니다. 그렇지 않으면이 단계 여기까지

XDocument database = XDocument.Load(pathToYourXmlFile); 

필요하지 않습니다, 당신이있어 :

List<XElement> defs = database.Elements("def"); 

:

<database> 
    <def number="1" name="one"/> 
    <def number="2" name="two"/> 
</database> 

그런 다음 모든 데프 요소의 목록을 얻을 수 있습니다 여기까지 :

<def number="1" name="one"/> 
<def number="2" name="two"/> 

지금, 당신은 (인증 된 정의의 각 DEF) 목록의 각 항목을 얻어야한다 :

foreach(XElement def in defs) 
{ 
    // Here you have each def <def number="x" name="y" /> 
    int number = def.Attribute("number").value; 
    string name = def.Attribute("name").value; 
} 

각 데프에서 정보를 추출하는 코드 것은 :

int number = def.Attribute("number").value; 
string name = def.Attribute("name").value; 

이제 전화 번호를 가지고 있음 이름, 그냥 사전에 추가하십시오.

dictionary.Add(number, name); 

희망이 있습니다.

+2

그게'database.Elements ("def"). ToList()'일까요? – codeulike