现在工程中新建一个 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
最后补充难度增加: