c#简单使用xml文件
首先添加txt文件:

设置为xml打开模式:

添加根标签、添加单个标签和属性:
<Skills>//根标签 <skill>//单个标签 <id>1</id>//属性 <name lang ="cn">天降正义</name>//lang表示language,cn表示中文,en表示英文 <power>80</power> </skill> <skill> <id>2</id> <name lang ="cn">神来之笔</name> <power>75</power> </skill> <skill> <id>3</id> <name lang="en">doubleHit</name> <power>77</power> </skill> </Skills>
使用xml文件
方法1:
利用XmlDocment解析xml文档
创建文档内相关信息的类
选择要加载解析的xml文件名
得到根节点(根标签)
得到根节点下的子节点(单个标签)的集合
遍历子节点的集合并将子节点下的结点(属性)的值InnerText赋予相关信息类的集合,其中也有特性,如上面定义的lang,可以用结点下的Attribute[index].Value得到。
static void Main(string[] args) { List<Skill> SkillList = new List<Skill>(); //使用XmlDocument解析文档 XmlDocument xmlSkillInfo = new XmlDocument(); //两种方法加载文档 xmlSkillInfo.Load(@".\..\..\SkillInfo.txt");//直接使用文件名加载 //xmlSkillInfo.LoadXml(File.ReadAllText(@".\..\..\SkillInfo.txt"));//使用文件内的数据加载 //得到根节点(根标签)//Skills XmlNode rootNode = xmlSkillInfo.FirstChild;//因为当前xml下只有一个根节点,所以用FirstChild获取即可 //得到根节点下的子节点(单个标签)//skill XmlNodeList SkillNodeList = rootNode.ChildNodes; //遍历所有的子节点(skill) foreach (XmlNode skillNode in SkillNodeList) { Skill skill = new Skill(); XmlNodeList skillList = skillNode.ChildNodes; //得到子节点(skill)下的各个属性(id、name[lang]和power)并将数据存入SkillList foreach (XmlNode fieldNode in skillList) { switch (fieldNode.Name)//通过Name属性可以获取结点的名字 { case "id": skill.id = Int32.Parse(fieldNode.InnerText); break; case "name": skill.name = fieldNode.InnerText; skill.lang = fieldNode.Attributes[0].Value; break; case "power": skill.power = Int32.Parse(fieldNode.InnerText); break; default: break; } } SkillList.Add(skill); } foreach (Skill skill in SkillList) { Console.WriteLine(skill.ToString());//需要重写ToString方法 } Console.ReadKey(); }
结果如下:

方法2:
通过XmlElement与XmlAttributeCollection获取节点名和结点下的属性,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>
主程序执行代码如下:
static void Main(string[] args) { List<Skill> skillList = new List<Skill>(); XmlDocument XmlSkillInfo = new XmlDocument(); XmlSkillInfo.Load(@".\..\..\xml技能信息.txt"); XmlNode SkillListNode = XmlSkillInfo.FirstChild.FirstChild;//SkillList XmlNodeList SkillNodeList = SkillListNode.ChildNodes;//SkillList foreach (XmlNode skillNode in SkillNodeList)//Skill and Name { Skill skill = new Skill(); XmlElement ele = skillNode["Name"];//获取名为"Name"的元素 skill.Name = ele.InnerText;//注意是InnerText不是Value XmlAttributeCollection xmlAttrCol = skillNode.Attributes;//获取此节点下的所有属性,并以集合的形式返回 skill.Id = Int32.Parse(xmlAttrCol["SkillID"].Value); skill.EngName = xmlAttrCol["SkillEngName"].Value; skill.TriggerYpye = Int32.Parse(xmlAttrCol["TriggerType"].Value); skill.ImageFile = xmlAttrCol["ImageFile"].Value; skill.AvailableRace = Int32.Parse(xmlAttrCol["AvailableRace"].Value); skillList.Add(skill); } foreach (Skill temp in skillList) { Console.WriteLine(temp.ToString()); } Console.ReadKey(); }
结果:


浙公网安备 33010602011771号