C#高级篇-XML相关

1.xml基础
xml指可扩展标记语言

被设计用来和传输和存储数据。XML被设计用来结构化、存储以及传输信息

 

XML语法规则

所有XML元素都必须有关闭标签

XML标签对大小写敏感

XML必须正确的嵌套

XML文档必须有根元素

XML属性值必须加引号

 

XML命名规则

名称可以包含字母、数字以及其他字符

名称不能以数字或者标点符号开始

名称不能以“xml”开始

名称不能包含空格

 

2.xml文档解析

创建一个简单的XML文档


  
    2
    汤姆的神爪
    233
  
  
    3
    杰瑞的闪烁
    66
  
  
    4
    Call of duty
    9999
  

创建一个用于保存Skill的类

//技能类
    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("{0},{1},{2},{3}",Id,Name,Lang,Damage);
        }
    }

在主程序中解析xml文件,将解析出来的结果保存到skill类创建出来的对象的集合中。

先创建List泛型为Skill

创建XmlDocument对象来解析xml文档

使用Load方法加载要解析的文档

使用得到的XmlDocument的FirstChild属性获取得到第一个节点

使用ChildNodes得到root节点下面的全部节点

将遍历得到的子节点再进行遍历,通过InnerText属性获取节点内部的文本,来保存到Skill的对象中,

将Skill对象添加到List中

遍历List来显示得到的结果

static void Main(string[] args)
        {
            //创建Skill的集合,用来存储解析得到的技能信息
            List skillList = new List();

            //XmlDocment专门用来解析xml文档的
            XmlDocument xmlDoc = new XmlDocument();
            
            //选择要加载解析的xml文档的名字
            xmlDoc.Load("skillinf.txt");

            //得到根节点 XmlNode用来表示一个节点
            XmlNode rootNode = xmlDoc.FirstChild;//获取第一个节点
            XmlNodeList skillNodeList = rootNode.ChildNodes;//获取当前结点下面的全部子节点
            
            foreach(XmlNode skillNode in skillNodeList)
            {
                Skill skill = new Skill();
                XmlNodeList filedNodeList = skillNode.ChildNodes;//获取skill节点下面的全部节点

                foreach(XmlNode filedNode in filedNodeList)
                {
                    if (filedNode.Name == "id") {
                        int id = Int32.Parse( filedNode.InnerText);//获取节点内部文本
                        skill.Id = id;
                    }else if(filedNode.Name == "name")
                    {
                        skill.Name = filedNode.InnerText;
                        skill.Lang = filedNode.Attributes[0].Value;
                    }
                    else
                    {
                        skill.Damage = Int32.Parse(filedNode.InnerText);
                    }
                }
                skillList.Add(skill);
            }
            foreach(Skill sk in skillList)
            {
                Console.WriteLine(sk);
            }
            Console.ReadKey();
        }

也可以通过LoadXml方法解析xml文件

xmlDoc.LoadXml(File.ReadAllText("skillinf.txt"));

 

3.xml文档解析技能信息例子

class Skill
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string EngName { get; set; }
        public int TriggerType { get; set; }
        public string ImageFile { get; set; }
        public int AvailableRace { get; set; }
        public override string ToString()
        {
            return string.Format( "{0},{1},{2},{3},{4},{5}"
                ,Id,Name,EngName,TriggerType,ImageFile,AvailableRace);
        }
    }
static void Main(string[] args)
        {
            List skillList = new List();

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("xml技能信息.txt");

            XmlNode skillInfoNode = xmlDoc.FirstChild;
            XmlNode skillListNode = skillInfoNode.FirstChild;

            XmlNodeList skillNodeList = skillListNode.ChildNodes;
            foreach(XmlNode skillnode in skillNodeList)
            {
                Skill skill = new Skill();
                XmlElement ele = skillnode["Name"];
                skill.Name = ele.InnerText;
                XmlAttributeCollection col = skillnode.Attributes;
                skill.Id = Int32.Parse(col["SkillID"].Value);
                skill.EngName = col["SkillEngName"].Value;
                skill.TriggerType = Int32.Parse(col["TriggerType"].Value);
                skillList.Add(skill);
            }

            foreach(Skill s in skillList)
            {
                Console.WriteLine(s);
            }
            Console.ReadKey();
        }

 

你可能感兴趣的:(C#高级篇-XML相关)