二、自定義XML結構資料-返回List集合-操作Node中的Attribute
阿新 • • 發佈:2021-01-03
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" 8View CodeAvailableRace="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>
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
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
1 List<SkillInfo> skillInfoList = ReadXMLDocumentHelper.FromXMLToSkillInfoList(); 2 foreach (SkillInfo sk in skillInfoList) 3 { 4 Console.WriteLine(sk); 5 }View Code