
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>

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 }

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 }

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