XML

Xml學習

XML 指可擴展標記語言
XML 被設計用來傳輸和存儲數據。XML 被設計用來結構化、存儲以及傳輸信息。

program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace PracticeXml
{
    class Program
    {
       
        static void Main(string[] args)
        {
            List<Skill> skillList = new List<Skill>();
            //1.解析文檔
            XmlDocument xmldoc = new XmlDocument();
            //2.加載文檔
            xmldoc.Load("TextFile1.txt");
            //3.得到根結點
            XmlNode rootNode = xmldoc.FirstChild;
            //4.得到根結點下的子結點
            XmlNodeList skillListNodeList = rootNode.ChildNodes;
            //5.遍歷skillList結點
            foreach (XmlNode skillListNode in skillListNodeList)
            {
                //6.得到skillList結點下的子結點
                XmlNodeList skilllist = skillListNode.ChildNodes;
                foreach (XmlNode skillInfo in skilllist)
                {
                    Skill skill = new Skill();
                    //第一種方法得到結點的屬性,通過字符索引器
                        //XmlAttributeCollection skillcol = skillInfo.Attributes;
                        //skill.SkillID = skillcol["SkillID"].Value;
                        //skill.SkillEngName = skillcol["SkillEngName"].Value;
                        //skill.TriggerType = skillcol["TriggerType"].Value;
                        //skill.ImageFile = skillcol["ImageFile"].Value;
                        //skill.AvailableRace = skillcol["AvailableRace"].Value;
                    //第二種方法得到結點的屬性,通過數組下標
                        skill.SkillID= skillInfo.Attributes[0].Value;
                        skill.SkillEngName = skillInfo.Attributes[1].Value;
                        skill.TriggerType = skillInfo.Attributes[2].Value;
                        skill.ImageFile = skillInfo.Attributes[3].Value;
                        skill.AvailableRace = skillInfo.Attributes[4].Value;
                 //7.得到skill下的子結點
                     //第一種方法通過名字得到指定的子結點
                         //XmlElement ele = skillInfo["Name"];//直接得到名字爲Name的子結點
                         //skill.Name = ele.InnerText;
                     //第二種方法通過遍歷結點得到所有的子結點
                     XmlNodeList skillNames = skillInfo.ChildNodes;
                     foreach (XmlNode name in skillNames)
                     {
                         if (name.Name=="Name")
                         {
                             skill.Name = name.InnerText;
                         }
                     }
                    skillList.Add(skill);
                }  
            }
            foreach (var item in skillList)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }
}

TextXml.cs

<SkillInfo>
<SkillList>
    <Skill
        SkillID="20002"  
        SkillEngName="Smash" 
        TriggerType="1" 
        ImageFile="data/gfx/image/gui_icon_skill_000.dds" 
        AvailableRace="7" 
    >
		<Name>重擊</Name>
	</Skill>
    <Skill
        SkillID="20003" 
        SkillEngName="Hide"
        TriggerType="2" 
        ImageFile="data/gfx/image/gui_icon_skill_001.dds"
        AvailableRace="1" 
    >
		<Name>隱身</Name>
	</Skill>
    <Skill
        SkillID="20004" 
        SkillEngName="Ikari" 
        TriggerType="3" 
        ImageFile="data/gfx/image/gui_icon_skill_002.dds" 
        AvailableRace="1" 
    >
		<Name>怒之翼</Name>
	</Skill>
    <Skill
        SkillID="20005" 
        SkillEngName="Revenge" 
        TriggerType="5" 
        ImageFile="data/gfx/image/gui_icon_skill_003.dds" 
        AvailableRace="2" 
    >
		<Name>光之復仇</Name>
	</Skill>
</SkillList>
</SkillInfo>

Skill.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PracticeXml
{
    class Skill
    {
        public string  SkillID { get; set; }
        public string SkillEngName { get; set; }
        public string TriggerType { get; set; }
        public string ImageFile { get; set; }
        public string AvailableRace { get; set; }
        public string Name { get; set; }

        public override string ToString()
        {
            return string.Format("技能Id:{0},技能英文名:{1},技能觸發方式:{2},技能圖標:{3},技能範圍{4},名字{5}", SkillID, SkillEngName, TriggerType, ImageFile, AvailableRace,Name);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章