xml
- 案例一
List<Skills> skillsList = new List<Skills>();
XmlDocument xml = new XmlDocument()
xml.Load("../../SkillInfo.txt");
XmlNode rootNode = xml.FirstChild;
XmlNodeList nodeList = rootNode.ChildNodes;
foreach (XmlNode node in nodeList)
{
Skills skill = new Skills();
XmlNodeList lists = node.ChildNodes;
foreach (XmlNode list in lists)
{
if (list.Name == "id")
{
skill.Id = Int32.Parse(list.InnerText);
}
else if (list.Name == "name")
{
skill.Name = list.InnerText;
//Attributes是获得属性的数组
skill.Lang = list.Attributes[0].Value;
}
else
{
skill.Damage = Int32.Parse(list.InnerText);
}
}
skillsList.Add(skill);
}
foreach (var skills in skillsList)
{
Console.WriteLine(skills.ToString());
}
Console.ReadKey();
- 案例二
List<xmlSkill> xmls = new List<xmlSkill>();
XmlDocument xml = new XmlDocument();
xml.Load("../../xmlSkill.txt");
XmlNode root = xml.FirstChild;
XmlNode Sec = root.FirstChild;
XmlNodeList secList = Sec.ChildNodes;
foreach (XmlNode sec in secList)
{
xmlSkill xmlSkill = new xmlSkill();
if (sec.Name == "Skill")
{
if (sec.FirstChild.Name == "Name")
{
xmlSkill.Name = sec.FirstChild.InnerText;
}
xmlSkill.SkillID = Int32.Parse(sec.Attributes[0].Value);
xmlSkill.SkillEngName = sec.Attributes[1].Value;
xmlSkill.TriggerType = Int32.Parse(sec.Attributes[2].Value);
xmlSkill.ImageFile = sec.Attributes[3].Value;
xmlSkill.AvailableRace = Int32.Parse(sec.Attributes[4].Value);
}
xmls.Add(xmlSkill);
}
foreach (xmlSkill xmla in xmls)
{
Console.WriteLine(xmla);
}
Console.ReadKey();
总结
- XmlDocument xml;
- 加载文本文件:xml.Load();
- 节点:XmlNode;
- 节点列表: XmlNodeList;
- 获取当前的值:XmlNode.innerText;
- 获取属性的值:XmlNode.Attributes[index].Name or .Value
Json
添加引用:LitJson
- 方法一
List<Json> jsonList = new List<Json>();
JsonData jsonDatas = JsonMapper.ToObject(File.ReadAllText("../../Json.txt"));
foreach (JsonData jsonData in jsonDatas)
{
Json json = new Json();
JsonData idValue = jsonData["id"];
JsonData nameValue = jsonData["name"];
JsonData levelValue = jsonData["level"];
json.Id = Int32.Parse(idValue.ToString());
json.Name = nameValue.ToString();
json.Level = Int32.Parse(levelValue.ToString());
jsonList.Add(json);
}
foreach (var json in jsonList)
{
Console.WriteLine(json.ToString());
}
Console.ReadKey();
- 方法二
// 使用数组进行对应
Json[] jsons = JsonMapper.ToObject<Json[]>(File.ReadAllText("../../Json.txt"));
foreach (Json json in jsons)
{
Console.WriteLine(json.ToString());
}
///使用泛型进行对应(能使用数组的就能使用泛型)
//List<Json> JSON = JsonMapper.ToObject<List<Json>>(File.ReadAllText("../../Json.txt"));
Skill skill = JsonMapper.ToObject<Skill>(File.ReadAllText("../../Json.txt"));
Console.WriteLine(skill.ToString());
foreach (var item in skill.skillList)
{
Console.WriteLine(item.ToString());
}
总结
- 注意:不论是字段还是属性都可以对应,但是严格区分大小写,变量名一定要一样
- int不用引号
- 字符串需要引号
- JsonMapper.ToObject这个主要解析 JsonData主要类
- { }表示对象
- []表示数组
- 不论最外层是[]还是{} 用字段和属性都可以对应
注意
有任何问题加群询问,也可以关注公众号Unity科技获取更多资源