Xml學習
XML 指可擴展標記語言
XML 被設計用來傳輸和存儲數據。XML 被設計用來結構化、存儲以及傳輸信息。
program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace PracticeXml
{
class Program
{
static void Main(string[] args)
{
List<Skill> skillList = new List<Skill>();
//1.解析文檔
XmlDocument xmldoc = new XmlDocument();
//2.加載文檔
xmldoc.Load("TextFile1.txt");
//3.得到根結點
XmlNode rootNode = xmldoc.FirstChild;
//4.得到根結點下的子結點
XmlNodeList skillListNodeList = rootNode.ChildNodes;
//5.遍歷skillList結點
foreach (XmlNode skillListNode in skillListNodeList)
{
//6.得到skillList結點下的子結點
XmlNodeList skilllist = skillListNode.ChildNodes;
foreach (XmlNode skillInfo in skilllist)
{
Skill skill = new Skill();
//第一種方法得到結點的屬性,通過字符索引器
//XmlAttributeCollection skillcol = skillInfo.Attributes;
//skill.SkillID = skillcol["SkillID"].Value;
//skill.SkillEngName = skillcol["SkillEngName"].Value;
//skill.TriggerType = skillcol["TriggerType"].Value;
//skill.ImageFile = skillcol["ImageFile"].Value;
//skill.AvailableRace = skillcol["AvailableRace"].Value;
//第二種方法得到結點的屬性,通過數組下標
skill.SkillID= skillInfo.Attributes[0].Value;
skill.SkillEngName = skillInfo.Attributes[1].Value;
skill.TriggerType = skillInfo.Attributes[2].Value;
skill.ImageFile = skillInfo.Attributes[3].Value;
skill.AvailableRace = skillInfo.Attributes[4].Value;
//7.得到skill下的子結點
//第一種方法通過名字得到指定的子結點
//XmlElement ele = skillInfo["Name"];//直接得到名字爲Name的子結點
//skill.Name = ele.InnerText;
//第二種方法通過遍歷結點得到所有的子結點
XmlNodeList skillNames = skillInfo.ChildNodes;
foreach (XmlNode name in skillNames)
{
if (name.Name=="Name")
{
skill.Name = name.InnerText;
}
}
skillList.Add(skill);
}
}
foreach (var item in skillList)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}
TextXml.cs
<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.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PracticeXml
{
class Skill
{
public string SkillID { get; set; }
public string SkillEngName { get; set; }
public string TriggerType { get; set; }
public string ImageFile { get; set; }
public string AvailableRace { get; set; }
public string Name { get; set; }
public override string ToString()
{
return string.Format("技能Id:{0},技能英文名:{1},技能觸發方式:{2},技能圖標:{3},技能範圍{4},名字{5}", SkillID, SkillEngName, TriggerType, ImageFile, AvailableRace,Name);
}
}
}