现在工程中新建一个 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:123
id:3,name:永恒零度,lang:cn,Damage:90
id:4,name:xxx,lang:en,Damage:400


最后补充难度增加:

Xml文档解析_xml