把写好的xml导入C#winform项目中
新建一个类:
代码:
using System.Collections.Generic;
using System.Text;
namespace xml
{
class Skill //类要以大写开头
{
//把id 设置为属性去获取
public int ID { get; set; }
public string Name { get; set; }
public string Lang { get; set; } //语言--标签属性
public int Damage { get; set; } //破坏力
}
}
主函数代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
namespace xml
{
class Program
{
static void Main(string[] args)
{
//用一个列表 把新写的Skill类传进去 存储
List<Skill> List = new List<Skill>();
XmlDocument xmlDoc = new XmlDocument();
//法1
xmlDoc.Load("skills.xml"); //放在debug 下
//法2
//xmlDoc.LoadXml(File.ReadAllText("skills.xml")); //先把所有文本内容读出来 再加载进去
XmlNode root = xmlDoc.ChildNodes[1]; //得到它的根节点
XmlNodeList skillList = root.ChildNodes;
foreach (XmlNode skill in skillList) //这个就是遍历你文档里面的 sikll节点
{
//这样 我们去遍历每一个skill节点的时候 先创建一个skill对象
Skill obj_skill = new Skill();
foreach (XmlNode node in skill.ChildNodes)
{
if (node.Name == "id") //判断节点是不是id节点 是的话 把它的内容赋值给我们的类(列表)
{
//int //返回的是string
obj_skill.ID = Int32.Parse(node.InnerText); //node.InnerText: 获取或设置节点及其所有子节点的连接值。
}
else if (node.Name == "name")
{
obj_skill.Name = node.InnerText; //名字中有一个标签属性 设置语言为中文
obj_skill.Lang = node.Attributes[0].Value; //Attributes 获取xml节点中的属性 只有一个属性 所以选择属性下标为0 那个 .Name是获取属性的名字 Value是获取属性的值
}
else if(node.Name == "damage")
{
obj_skill.Damage = Int32.Parse(node.InnerText);
}
}
//然后把对象(新建的类)skill 放到我们的list集合里面
List.Add(obj_skill); //把xml的值--(放)--》类-----(存)-----》某个集合里面-----》foreach遍历(读取)
//类的属性数据 一般放到某个列表里去存取
}
foreach (Skill s in List)
{
//再用类遍历输出
Console.WriteLine(s.ID+","+s.Name + "," +s.Lang + "," +s.Damage);
}
}
}
}
运行结果: