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();
        }
    }
}
Read XML

 

小菜鸡在编译运行的时候碰到了一个小问题,如图

然后打开了项目看了一下,发现这个skillinfo.txt文件在主目录下面,没有在Debug文件夹下,把这个问价复制到Debug文件夹下就好了

正确运行如图

 

 

 

 

 

好了,菜鸡只能这样了,天天玩的啥都不会了  (T_T)

posted @ 2017-08-22 02:02  battly  阅读(318)  评论(0编辑  收藏  举报