2011-09-02 3 views
1

XML 파일의 내용을 사용할 배열로로드하는 좋은 방법을 찾지 만 여기저기서 부분 응답 만 찾았습니다. 내 XML 파일은 단순화를 위해 포함 리소스이며 모두 idname 특성을 포함하는 약 115 개의 요소 목록을 포함합니다.XML에서 임베디드 리소스로 배열

XML은 그래서 다음과 같습니다

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Item> 
     <id>1</id> 
     <name>Example1</name> 
    </Item> 
    <Item> 
     <id>2</id> 
     <name>Example2</name> 
    </Item> 
    <Item> 
     <id>3</id> 
     <name>Example3</name> 
    </Item> 
</Items> 

나는 모든 것을로드 할 수 그리고 난은 InnerXML 내 데이터를 볼 수 있지만 올바르게 접근하는 방법을 찾을 수 없습니다. 그것은 상당히 다른 일을 시도 인해 나에게 깨진하지만 나는 그것이 일반적인 생각을 전달 생각되지만, 내가 그 이상적이 배열을 설정 나를 사용을위한 것입니다 가지고있는 코드의

public Form1() 
    { 
     InitializeComponent(); 

     assembly = Assembly.GetExecutingAssembly(); 
     XmlDocument xml = null; 
     try 
     { 
      string filePath = "MyProject.ItemList.xml"; 
      Stream fileStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(filePath); 
      if (fileStream != null) 
      { 
       xml = new XmlDocument(); 
       xml.Load(fileStream); 
      } 
     } 
     catch { 
      //Do nothing 
     } 

     XmlDocument itemsFromXML = xml.DocumentElement.InnerXml; 

     foreach (XmlNode node in itemsFromXML) 
     { 
      int id = Convert.ToInt32(node.Attributes.GetNamedItem("id").ToString()); 
      string name = node.Attributes.GetNamedItem("name").ToString(); 

      gameItemList.Add(new GameItem(id, name)); 
     } 
    } 

. 희망을 갖고 누군가가 그것을 이해하고 나에게 끔찍하게 잘못하고있는 것을 설명 할 수 있습니다. (>. <) 중요한 것을 놓친 경우 더 많은 정보, 설명 등을 제공하게되어 기쁩니다!

감사합니다.

답변

1

xpath를 사용하십시오. System.Xml.Linq를 사용

XmlNodeList nodes = xml.SelectNodes("Items/Item"); 

foreach (XmlNode node in nodes) 
{ 
    int id = int.Parse(node.SelectSingleNode("id").InnerText); 
} 
+0

, 덕분에 마법처럼 일했다. –

3

: 빠른 응답

최고
var items = XElement.Load(fileStream) 
       .Elements("Item") 
       .Select(itemXml => new { 
        id = (int)itemXml.Element("id").Value, 
        name = itemXml.Element("name").Value 
       }) 
       .ToArray(); 
관련 문제