XML基础文本C#解析


XML基础文本C#解析


1. XML技能数据文本

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

2技能. 技能Skill.Class

namespace AnalyzeXmlText
{
    public class Skill
    {
        public int skill_Id;
        public string skill_Name;
        public string skill_EngName;
        public int Trigger_Type;
        public string Image_File;
        public int AvailableRace;

        public override string ToString()
        {
            return $"{nameof(skill_Id)}: {skill_Id}, {nameof(skill_Name)}: {skill_Name}, {nameof(skill_EngName)}: {skill_EngName}, {nameof(Trigger_Type)}: {Trigger_Type}, {nameof(Image_File)}: {Image_File}, {nameof(AvailableRace)}: {AvailableRace}";
        }
    }
}

3. 解析XML文本数据

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

namespace AnalyzeXmlText
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Skill> skillList= new List<Skill>();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("Skill.txt");
            XmlNode skillInfoNode = xmlDoc.FirstChild;//获取根节点SkillInfo
            XmlNode skillListNode = skillInfoNode.FirstChild;//获取SkillInfo的根节点SkillList
            XmlNodeList skillNodes = skillListNode.ChildNodes;//获取SkillList根的所有节点Skill
            foreach (XmlNode skillNode in skillNodes)//遍历所有的skill标签
            {
                //将Name标签的value保存在skill对象里面
                Skill skill = new Skill();
                XmlElement element =  skillNode["Name"];
                skill.skill_Name = element.InnerText;
                //获得skill标签的所有属性 返回值为一个XmlAttributeCollection集合
                XmlAttributeCollection skillAttributes  = skillNode.Attributes;
                //将skill标签的属性SkillID保存在skill对象里面
                int id = Int32.Parse(skillAttributes["SkillID"].Value);
                skill.skill_Id = id;
                //将skill标签的属性SkillEngName属性保存在skill对象里面
                string skillEngName = skillAttributes["SkillEngName"].Value;
                skill.skill_EngName = skillEngName;
                Console.WriteLine(element.InnerText);
                //将skill标签的属性Trigger_Type保存在skill对象里面
                int triggerType = Int32.Parse(skillAttributes["TriggerType"].Value);
                skill.Trigger_Type = triggerType;
                //将skill标签的属性Image_File保存在skill对象里面
                string imageFile = skillAttributes["ImageFile"].Value;
                skill.Image_File = imageFile;
                //将skill标签的AvailableRace保存在skill对象里面
                int availableRace = Int32.Parse(skillAttributes["AvailableRace"].Value);
                skill.AvailableRace = availableRace;
                skillList.Add(skill);
            }
            foreach (Skill skill in skillList)
            {
                Console.WriteLine(skill.ToString());
            }
            Console.ReadKey();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值