DEMO1
XML文档
<skills>
<skill>
<id>2</id>
<name lang="cn">天下无双</name>
<damage>123</damage>
</skill>
<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 _030_项目了 {
/// <summary>
/// 技能类
/// </summary>
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);
}
}
}
Program
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace _030_项目了 {
class Program {
static void Main(string[] args) {
//创建技能信息集合,用来存储所有的技能信息
List<Skill> skillList = new List<Skill>();
// XmlDocment专门用来解析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();
XmlNodeList fieldNodeList = skillNode.ChildNodes;//获取skill结点下面所有的结点
foreach (XmlNode fieldNode in fieldNodeList)
{
if (fieldNode.Name == "id")//通过Name属性 可以获取一个结点的名字
{
int id = Int32.Parse(fieldNode.InnerText);//获取结点内部的文本
skill.Id = id;
}else if (fieldNode.Name == "name")
{
string name = fieldNode.InnerText;
skill.Name = name;
skill.Lang = fieldNode.Attributes[0].Value;
}
else
{
skill.Damage = Int32.Parse(fieldNode.InnerText);
}
}
skillList.Add(skill);
}
foreach (Skill skill in skillList)
{
Console.WriteLine(skill);
}
Console.ReadKey();
}
}
}
DEMO2
XML文档
<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类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// 作者:siki
/// 微信公众账号:devsiki
/// QQ:804632564
/// 请关注微信公众号,关注最新的视频和文章教程信息!O(∩_∩)O
/// </summary>
namespace _031_xml文档解析_技能信息 {
class Skill {
public int Id { get; set; }
public string Name { get; set; }
public string EngName { get; set; }
public int TriggerType { get; set; }
public string ImageFile { get; set; }
public int AvailableRace { get; set; }
public override string ToString()
{
return string.Format("Id: {0}, Name: {1}, EngName: {2}, TriggerType: {3}, ImageFile: {4}, AvailableRace: {5}", Id, Name, EngName, TriggerType, ImageFile, AvailableRace);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace _031_xml文档解析_技能信息 {
class Program {
static void Main(string[] args) {
List<Skill> skillList = new List<Skill>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("xml技能信息.txt");
//XmlNode skillInfoNode = xmlDoc.FirstChild;
//XmlNode skillListNode = skillInfoNode.FirstChild;
XmlNode skillListNode = xmlDoc.FirstChild.FirstChild;
XmlNodeList skillNodeList = skillListNode.ChildNodes;
foreach (XmlNode skillNode in skillNodeList)
{
Skill skill = new Skill();
XmlElement ele = skillNode["Name"];
skill.Name = ele.InnerText;
XmlAttributeCollection col = skillNode.Attributes;//获取该结点属性的集合
//skill.Id = Int32.Parse(col["SkillID"].Value);
XmlAttribute idAttribute = col["SkillID"];//通过字符串索引器 获取一个属性对象
skill.Id = Int32.Parse(idAttribute.Value);
skill.EngName = col["SkillEngName"].Value;
skill.TriggerType = Int32.Parse(col["TriggerType"].Value) ;
skill.ImageFile = col["ImageFile"].Value;
skill.AvailableRace = Int32.Parse(col["AvailableRace"].Value);
skillList.Add(skill);
}
foreach (Skill s in skillList)
{
Console.WriteLine(s);
}
Console.ReadKey();
}
}
}