1.xml基础
xml指可扩展标记语言
被设计用来和传输和存储数据。XML被设计用来结构化、存储以及传输信息
XML语法规则
所有XML元素都必须有关闭标签
XML标签对大小写敏感
XML必须正确的嵌套
XML文档必须有根元素
XML属性值必须加引号
XML命名规则
名称可以包含字母、数字以及其他字符
名称不能以数字或者标点符号开始
名称不能以“xml”开始
名称不能包含空格
2.xml文档解析
创建一个简单的XML文档
<skills>
<skill>
<id>2</id>
<name lang ="cn">汤姆的神爪</name>
<damage>233</damage>
</skill>
<skill>
<id>3</id>
<name lang ="cn">杰瑞的闪烁</name>
<damage>66</damage>
</skill>
<skill>
<id>4</id>
<name lang ="en">Call of duty</name>
<damage>9999</damage>
</skill>
</skills>
创建一个用于保存Skill的类
//技能类
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("{0},{1},{2},{3}",Id,Name,Lang,Damage);
}
}
在主程序中解析xml文件,将解析出来的结果保存到skill类创建出来的对象的集合中。
先创建List泛型为Skill
创建XmlDocument对象来解析xml文档
使用Load方法加载要解析的文档
使用得到的XmlDocument的FirstChild属性获取得到第一个节点
使用ChildNodes得到root节点下面的全部节点
将遍历得到的子节点再进行遍历,通过InnerText属性获取节点内部的文本,来保存到Skill的对象中,
将Skill对象添加到List中
遍历List来显示得到的结果
static void Main(string[] args)
{
//创建Skill的集合,用来存储解析得到的技能信息
List<Skill> skillList = new List<Skill>();
//XmlDocment专门用来解析xml文档的
XmlDocument xmlDoc = new XmlDocument();
//选择要加载解析的xml文档的名字
xmlDoc.Load("skillinf.txt");
//得到根节点 XmlNode用来表示一个节点
XmlNode rootNode = xmlDoc.FirstChild;//获取第一个节点
XmlNodeList skillNodeList = rootNode.ChildNodes;//获取当前结点下面的全部子节点
foreach(XmlNode skillNode in skillNodeList)
{
Skill skill = new Skill();
XmlNodeList filedNodeList = skillNode.ChildNodes;//获取skill节点下面的全部节点
foreach(XmlNode filedNode in filedNodeList)
{
if (filedNode.Name == "id") {
int id = Int32.Parse( filedNode.InnerText);//获取节点内部文本
skill.Id = id;
}else if(filedNode.Name == "name")
{
skill.Name = filedNode.InnerText;
skill.Lang = filedNode.Attributes[0].Value;
}
else
{
skill.Damage = Int32.Parse(filedNode.InnerText);
}
}
skillList.Add(skill);
}
foreach(Skill sk in skillList)
{
Console.WriteLine(sk);
}
Console.ReadKey();
}
也可以通过LoadXml方法解析xml文件
xmlDoc.LoadXml(File.ReadAllText("skillinf.txt"));
3.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( "{0},{1},{2},{3},{4},{5}"
,Id,Name,EngName,TriggerType,ImageFile,AvailableRace);
}
}
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;
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);
skill.EngName = col["SkillEngName"].Value;
skill.TriggerType = Int32.Parse(col["TriggerType"].Value);
skillList.Add(skill);
}
foreach(Skill s in skillList)
{
Console.WriteLine(s);
}
Console.ReadKey();
}