案例2 -Xml文档解析技能信息
xml技能信息.txt
这是Xml文件,创建在同一工程下
<SkillInfo>
<SkillList>
<Skill
SkillID="20002"
SkillEngName="Smash"
TriggerType="1"
ImageFile="data/gfx/image/gui_icon_skill_000.dds"
AvailableRace="7"
>
<Name>重击</Name>
</Skill>
<Skill
SkillID="20003"
SkillEngName="Hide"
TriggerType="2"
ImageFile="data/gfx/image/gui_icon_skill_001.dds"
AvailableRace="1"
>
<Name>隐身</Name>
</Skill>
<Skill
SkillID="20004"
SkillEngName="Ikari"
TriggerType="3"
ImageFile="data/gfx/image/gui_icon_skill_002.dds"
AvailableRace="1"
>
<Name>怒之翼</Name>
</Skill>
<Skill
SkillID="20005"
SkillEngName="Revenge"
TriggerType="5"
ImageFile="data/gfx/image/gui_icon_skill_003.dds"
AvailableRace="2"
>
<Name>飞行</Name>
</Skill>
</SkillList>
</SkillInfo>
Skill类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 案例2_xml文档解析技能信息
{
class Skill
{
public int Id {get;set; }
public string EngName { get; set; }
public string Name { get; set; }
public int TriggerType { get; set; }
public string ImageFile { get; set; }
public int AvaliableRace { get; set; }
//ALT+Insert
public override string ToString()
{
return string.Format("Id:{0},Name:{1},EngName:{2},TriggerType{3}," +
"ImageFile:{4},AvaliableRac{5}",Id,Name,EngName,TriggerType,ImageFile,AvaliableRace
);
}
}
}
主程序 Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace 案例2_xml文档解析技能信息
{
class Program
{
static void Main(string[] args)
{
List<Skill> skillList = new List<Skill>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("xml技能信息.txt");
XmlNode skillListNode = xmlDoc.FirstChild.FirstChild;//得到第二个结点
XmlNodeList skillNodeList = skillListNode.ChildNodes;//获得所有子节点
foreach (XmlNode skillNode in skillNodeList)
{
Skill skill = new Skill();
XmlElement ele = skillNode["Name"];//XmlElement和XmlNode相似
skill.Name= ele.InnerText;//获取Name里面的内容
XmlAttributeCollection col = skillNode.Attributes;//XmlAttributeCollection获取该节点属性的集合
//skill.Id = Int32.Parse(col["SkillID"].Value);下面两步是这一步的分解
XmlAttribute idAttribute = col["SkillID"];//通过字符串索引 获取一个属性对象
skill.Id = Int32.Parse(idAttribute.Value);//转化成int类型
skill.EngName = col["SkillEngName"].Value;//SkillEngName和EngName都是string类型的,所以不需要转化
skill.TriggerType = Int32.Parse(col["TriggerType"].Value);
skill.ImageFile = col["ImageFile"].Value;
skill.AvaliableRace = Int32.Parse(col["AvailableRace"].Value);
skillList.Add(skill);
}
foreach (Skill s in skillList)
{
Console.WriteLine(s);
}
Console.ReadKey();
}
}
}
运行结果: