Xml文档解析

来源:互联网 发布:电脑没网络手机能连上 编辑:程序博客网 时间:2024/06/07 11:51

现在工程中新建一个 Xml 文档 名字 为 (Skills.xml)内容如下 (补充 :选中xml文档选中复制较新的到输出目录)

<skills>  <sikll>    <id>2</id>    <name lang="cn">天下无双</name>    <damage>123</damage>  </sikll>  <skill>    <id>3</id>    <name lang="cn">永恒零度</name>    <damage>90</damage>  </skill>  <skill>    <id>4</id>    <name lang="en">xxx</name>    <damage>400</damage>  </skill></skills>
然后再新建一个Skill 类  代码如下 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace XML解析{    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);        }    }}

然后再 Main 函数进行解析 代码如下

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;namespace XML解析{    class Program    {        static void Main(string[] args)        {            //创建技能信息集合 用来存储所有技能信息            List<Skill> skillList = new List<Skill>();            //用来专门解析Xml文档的            XmlDocument xmlDox = new XmlDocument();                       // xmlDox.Load("Skills.xml");  //选择要加载的xml文档            xmlDox.LoadXml(File.ReadAllText("Skills.xml"));//传递一个字符串 Xml格式的字符串            //得到根节点  (Xml)用来代表一个结点)         XmlNode rootNode =   xmlDox.FirstChild;            // 得到根节点下的子节点的集合        XmlNodeList skillNodeList= rootNode.ChildNodes;//用来获取当前结点下的所有子节点              foreach (XmlNode skillNode in skillNodeList)            {                Skill skill = new Skill();              XmlNodeList fieldNodeList =  skillNode.ChildNodes; //获取skill节点下的所有节点                foreach (XmlNode fileNode  in fieldNodeList)                {                    if (fileNode.Name=="id")                    {                      int id=Int32.Parse ( fileNode.InnerText);// 获取节点内部文本;                        skill.Id = id;                    }                    else if(fileNode.Name=="name")                    {                        string name = fileNode.InnerText;                        skill.Name = name;                     skill .Lang=  fileNode.Attributes[0].Value; //获取索引为0的属性值(第一个)                     }                    else                     {                        skill.Damage = Int32.Parse(fileNode.InnerText);                    }                }                skillList.Add(skill);            }            foreach (Skill item in skillList)            {                Console.WriteLine(item);            }            Console.ReadKey();        }    }}
输出结果 就是已经解析好的XML文档

id:2,name:天下无双,lang:cn,Damage:123id:3,name:永恒零度,lang:cn,Damage:90id:4,name:xxx,lang:en,Damage:400


最后补充难度增加:



原创粉丝点击