XML练习
先上一个用作读取的文件
<skills> <skill> <id>1</id> <name lang="cn">咫尺天涯</name> <damage>100</damage> </skill> <skill> <id>2</id> <name lang="cn">零度空间</name> <damage>110</damage> </skill> <skill> <id>3</id> <name lang="cn">虎踞式</name> <damage>120</damage> </skill> </skills>
然后用下面的代码来读取xml文件中的信息
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace XML练习 { class Program { class skill { public int id { get; set; } public string name { get; set; } public string lang { get; set; } public int damage { get; set; } public override string ToString() { return string.Format("id:{0},name:{1},lang:{2},damage:{3}", id, name, lang, damage); } } static void Main(string[] args) { //创建技能信息集合,用来储存所有的技能信息 List<skill> skillList = new List<skill>(); //XmlDoccument专门解析XML文档 XmlDocument xmlDoc = new XmlDocument(); //选择要加载的xml文档的名字 xmlDoc.Load("skillinfo.txt"); //获得第一个节点 XmlNode rootNode = xmlDoc.FirstChild; //得到根节点的子节点集合 XmlNodeList skillNodeList = rootNode.ChildNodes;//获取当前节点下面的所有子节点 foreach (XmlNode skillNode in skillNodeList) { skill skill = new skill(); XmlNodeList fieldNodeList = skillNode.ChildNodes;//获取skill节点下的子节点 foreach (XmlNode fieldNode in fieldNodeList) { if (fieldNode.Name =="id")//通过Name属性可以获取一个节点的名字 { int id=Int32.Parse(fieldNode.InnerText) ;//得到内部的文本并强制转换为int型,因为文本为string型的 转换为id的时候需要是int型的 skill.id = id; }else if(fieldNode.Name=="name") { string name= fieldNode.InnerText; skill.name = name; skill.lang= fieldNode.Attributes[0].Value; } else { skill.damage = Int32.Parse(fieldNode.InnerText); } } skillList.Add(skill);//把节点技能的信息添加到技能集合里 } foreach (skill skill in skillList)//从技能集合中获取技能信息 { Console.WriteLine(skill); } Console.ReadKey(); } } }
小菜鸡在编译运行的时候碰到了一个小问题,如图
然后打开了项目看了一下,发现这个skillinfo.txt文件在主目录下面,没有在Debug文件夹下,把这个问价复制到Debug文件夹下就好了
正确运行如图
好了,菜鸡只能这样了,天天玩的啥都不会了 (T_T)