using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
namespace XML文档
{
class Program
{
static void Main(string[] args)
{
//创建技能信息集合,用来存储所有的技能信息
List<Skill> skillList = new List<Skill>();
//XmlDocument专门用来解析xml文档
XmlDocument xmlDoc = new XmlDocument();
//选择要加载解析的xml文档的名字
//xmlDoc.Load("Skillinfo.txt");加载文件,传递过来一个文件名
xmlDoc.LoadXml(File.ReadAllText("Skillinfo.txt"));//传递一个字符串(xml格式的字符串)
//得到根节点(xmlnode用来代表一个结点)
XmlNode rootNode = xmlDoc.FirstChild;//获取第一个节点即根节点
//得到根节点下面的子节点的集合
XmlNodeList skillNodeList = rootNode.ChildNodes;//获得当前节点下的所有子节点
foreach (XmlNode skillNode in skillNodeList)
{
Skill skill = new Skill();
//filedNode表示字段节点集合
XmlNodeList filedNodeList = skillNode.ChildNodes;//获取skill结点下面所有的结点
foreach (XmlNode filedNode in filedNodeList)
{
if (filedNode.Name == "id")//通过Name属性可以获取一个结点的名字
{
int id = Int32.Parse(filedNode.InnerText);//获取节点内部的文本
skill.Id = id;
}
else if (filedNode.Name == "name")
{
string name = filedNode.InnerText;
skill.Name = name;
skill.Lang = filedNode.Attributes[0].Value; //Attributes[0]可以得到某个结点的属性,比如
}
else//当这个结点是damage的时候
{
skill.Damage = int.Parse(filedNode.InnerText);
}
}
skillList.Add(skill);
}
foreach (var skill in skillList)
{
Console.WriteLine(skill);//直接输出Skill类的对象skill的话,会输出类名,所以需要在Skill类里面输出ToString方法
}
Console.ReadKey();
}
}
}
该工程下创建的skill类
using System;
using System.Collections.Generic;
using System.Text;
namespace XML文档
{
//技能类
class Skill
{
public int Id { get; set; }
public string Name { get; set; }
public string Lang { get; set; }
public int Damage { get; set; }
//A/t+Insert->Formatting Members->全选所有属性
public override string ToString()
{
return $"{nameof(Id)}: {Id}, {nameof(Name)}: {Name}, {nameof(Lang)}: {Lang}, {nameof(Damage)}: {Damage}";
}
}
}
``