1. 程式人生 > 實用技巧 >二、自定義XML結構資料-返回List集合-操作Node中的Attribute

二、自定義XML結構資料-返回List集合-操作Node中的Attribute

1.建立SkillInfoXML.txt 右擊檔案以xml文字編輯器開啟 右鍵點選這個txt檔案 選擇較新則複製

2.簡單的xml結構文件

 1 <SkillInfo>
 2     <SkillList>
 3         <Skill
 4             SkillID="20002"  
 5             SkillEngName="Smash" 
 6             TriggerType="1" 
 7             ImageFile="data/gfx/image/gui_icon_skill_000.dds" 
 8
AvailableRace="7" 9 > 10 <Name>重擊</Name> 11 </Skill> 12 <Skill 13 SkillID="20003" 14 SkillEngName="Hide" 15 TriggerType="2" 16 ImageFile="data/gfx/image/gui_icon_skill_001.dds" 17 AvailableRace
="1" 18 > 19 <Name>隱身</Name> 20 </Skill> 21 <Skill 22 SkillID="20004" 23 SkillEngName="Ikari" 24 TriggerType="3" 25 ImageFile="data/gfx/image/gui_icon_skill_002.dds" 26 AvailableRace="1"
27 > 28 <Name>怒之翼</Name> 29 </Skill> 30 <Skill 31 SkillID="20005" 32 SkillEngName="Revenge" 33 TriggerType="5" 34 ImageFile="data/gfx/image/gui_icon_skill_003.dds" 35 AvailableRace="2" 36 > 37 <Name>光之復仇</Name> 38 </Skill> 39 </SkillList> 40 </SkillInfo>
View Code

3.建立SkillInfo類對應XML資料

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 
 5 namespace XMLConsoleApp
 6 {
 7     public class SkillInfo
 8     {
 9         public int Id { get; set; }
10         public string SkillEngName { get; set; }
11 
12         public string Name { get; set; }
13         public int TriggerType { get; set; }
14         public string ImageFile { get; set; }
15         public int AvailableRace { get; set; }
16         
17         //重寫ToString方法 方便列印輸出
18         public override string ToString()
19         {
20             return string.Format("Id:{0},Name:{5},EngName:{1},TriggerType:{2},", "ImageFile:{3},AvailableRace:{4}", Id, SkillEngName, TriggerType, ImageFile, AvailableRace,Name);
21         }
22 
23     }
24 }
View Code

4.封裝方法將XML結構資料轉換為集合並返回

 1         /// <summary>
 2         /// 將XML文件資訊轉換為List<>集合
 3         /// </summary>
 4         /// <returns>技能資訊集合</returns>
 5         public static List<SkillInfo> FromXMLToSkillInfoList()
 6         {
 7             //例項化技能資訊集合
 8             List<SkillInfo> skillInfoList = new List<SkillInfo>();
 9 
10             //建立XML文件的例項
11             XmlDocument xmlDocument = new XmlDocument();
12 
13             //載入具有XML資料結構的檔案
14             xmlDocument.Load("SkillInfoXML.txt");
15 
16             //獲取根節點<SkillInfo>下的<SkillList>節點
17             XmlNode skillListNode = xmlDocument.FirstChild.FirstChild;
18 
19             //<SkillList>節點下的所有 <Skill> 
20             XmlNodeList skillNodeList = skillListNode.ChildNodes;
21 
22             //遍歷技能資訊 
23             foreach (XmlNode skillNode in skillNodeList)
24             {
25                 //例項化技能資訊物件
26                 SkillInfo skillInfo = new SkillInfo();
27 
28                 //通過所引起獲取<Name>節點的文字資訊
29                 XmlElement eleName = skillNode["Name"];
30                 skillInfo.Name = eleName.InnerText;
31 
32                 //獲取Xml屬性集合
33                 XmlAttributeCollection xmlAttributeCollection = skillNode.Attributes;
34 
35                 //通過所引起將屬性集合中的值賦給SkillInfo物件中的屬性
36                 skillInfo.Id = Int32.Parse(xmlAttributeCollection["SkillID"].Value);
37                 skillInfo.SkillEngName = xmlAttributeCollection["SkillEngName"].Value;
38                 skillInfo.TriggerType = Int32.Parse(xmlAttributeCollection["TriggerType"].Value);
39                 skillInfo.ImageFile = xmlAttributeCollection["ImageFile"].Value;
40                 skillInfo.AvailableRace = Int32.Parse(xmlAttributeCollection["AvailableRace"].Value);
41 
42                 //將獲取到的每一個物件新增到技能資訊集合中
43                 skillInfoList.Add(skillInfo);
44             }
45 
46             //返回技能資訊集合
47             return skillInfoList;
48         }
View Code

5.控制檯列印輸出.

1             List<SkillInfo> skillInfoList = ReadXMLDocumentHelper.FromXMLToSkillInfoList();
2             foreach (SkillInfo sk in skillInfoList)
3             {
4                 Console.WriteLine(sk);
5             }
View Code