二、自定义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
原文地址:https://www.cnblogs.com/ABC-wangyuhan/p/14226082.html