c#高级知识 xml和json

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科技获取更多资源

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小狼君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值