unity常见的解析数据方式XML,JSON,ProtocolBuf篇(二)XML
2016-12-28 17:44
477 查看
unity常见的解析数据方式XML,JSON,ProtocolBuf篇(二)XML
概述:
不管我们使用XML,还是JSON,还是ProtocolBuf,都是用来做数据存储和传输的,一般用作技能信息的存储,多会使用xml文档格式,我们来手写一个xml文档。
从上面的xml文档的格式中我们可以很清楚的看到最重要的几条xml手写格式:
①.标签对应,同时记住又开始标签就要有结束标签<p></p>
②.标签的可以嵌套,形如<p><l></l></p>
③.看看标签书写格式,大写对大写,小写对小写(就是xml文档对标签的大小写敏感)
④.标签可以添加属性,但是记住属性的值一定要用“”绑定,形如<name><pc="pengchao"></name>
⑤.必须有根节点,如<GBSkills></GBSkills>
从上面例子也能够看得出来,xml文档该怎么写,写的时候需要注意什么,这些多写几遍就记住了,我们会写不会用也没什么用,所以会写xml文档之后,还要学会用来做什么,如何将xml文档里面的信息解析出来,为我们所用。
解析XML文本中的内容:
首先为编写好的XML文档创建对应的脚本对象:
然后开始解析XML文档:解析XML文档的重点要素就是按照节点解析,层层剥离节点!
解析过程:
①.首先是不是需要加载到XML文本所在的路径,将文本加载进来
②.然后按照节点获取的方式根据需求层层剥离节点
解析的过程大致如上,没有什么难度。
概述:
不管我们使用XML,还是JSON,还是ProtocolBuf,都是用来做数据存储和传输的,一般用作技能信息的存储,多会使用xml文档格式,我们来手写一个xml文档。
<GBSkills> <skill> <id>1</id> <name Game="JXQY">蜀犬吠日</name> <damage>6533</damage> </skill> <skill> <id>2</id> <name Game="JXQY">亢龙有悔</name> <damage>7869</damage> </skill> <skill> <id>3</id> <name Game="JXQY">棒打狗头</name> <damage>4452</damage> </skill> </GBSkills>
从上面的xml文档的格式中我们可以很清楚的看到最重要的几条xml手写格式:
①.标签对应,同时记住又开始标签就要有结束标签<p></p>
②.标签的可以嵌套,形如<p><l></l></p>
③.看看标签书写格式,大写对大写,小写对小写(就是xml文档对标签的大小写敏感)
④.标签可以添加属性,但是记住属性的值一定要用“”绑定,形如<name><pc="pengchao"></name>
⑤.必须有根节点,如<GBSkills></GBSkills>
从上面例子也能够看得出来,xml文档该怎么写,写的时候需要注意什么,这些多写几遍就记住了,我们会写不会用也没什么用,所以会写xml文档之后,还要学会用来做什么,如何将xml文档里面的信息解析出来,为我们所用。
解析XML文本中的内容:
首先为编写好的XML文档创建对应的脚本对象:
class SkillMap { public int ID { get; set; } public string Name { get; set; } public int Damage { get; set; } public string Game { get; set; } }
然后开始解析XML文档:解析XML文档的重点要素就是按照节点解析,层层剥离节点!
解析过程:
①.首先是不是需要加载到XML文本所在的路径,将文本加载进来
②.然后按照节点获取的方式根据需求层层剥离节点
class Program { static void Main(string[] args) { List<SkillMap>skillList=new List<SkillMap>(); //第一步 加载xml文档 XmlDocument xmlSkill = new XmlDocument(); //xmlSkill.Load("Skill.xml"); 加载方式一 xmlSkill.LoadXml(File.ReadAllText("Skill.xml"));//加载方式二 //第二步 拆分根节点 XmlNode rootNode = xmlSkill.FirstChild; //rootNode.ChildNodes//获取节点下面所有子节点函数 XmlNodeList nodeList = rootNode.ChildNodes; //第三步 节点的层层剥离 for (int i = 0; i < nodeList.Count; i++) { SkillMap skill = new SkillMap(); XmlNodeList childNodeList = nodeList[i].ChildNodes; for (int j = 0; j < childNodeList.Count; j++) { if (childNodeList[j].Name == "id") { skill.ID = Int32.Parse(childNodeList[j].InnerText); // Console.WriteLine(skill.ID); } else if (childNodeList[j].Name == "name") { skill.Name = childNodeList[j].InnerText; skill.Game=childNodeList[j].Attributes[0].Value; //Console.WriteLine(skill.Game); //Console.WriteLine(skill.Name); } else if (childNodeList[j].Name == "damage") { skill.Damage =Int32.Parse(childNodeList[j].InnerText); //Console.WriteLine(skill.Damage); } } skillList.Add(skill); } for (int i = 0; i < skillList.Count; i++) { Console.WriteLine(skillList[i].Name+'\n'+skillList[i].Damage); } Console.ReadKey(); //Console.WriteLine(rootNode.Name);//GBSkills //Console.ReadKey(); } }
解析的过程大致如上,没有什么难度。
相关文章推荐
- Unity常见的解析数据方式XML,JSON,ProtocolBuf篇(三)Json
- Unity常见的解析数据方式XML,JSON,ProtocolBuf篇(一)Protobuf
- android 解析服务器数据使用json还是xml方式
- XML数据的三种解析(JSON方式 , DOM方式 , Sax方式)
- iOS- JSon和Xml解析,与服务器交互数据的解析详解与使用,各种解析方式详解
- android中常见的二种数据解析方法----XML和Json
- XML数据解析方式各有什么不同,JSON解析有哪些框架?
- unity中三种数据存储方式ScriptableObject,Json,Xml和Dictionary的序列化
- 四种常见的 POST 提交数据方式(application/x-www-form-urlencoded,multipart/form-data,application/json,text/xml)
- Android第一行代码 第九章 数据解析方式(xml,json)
- XML/JSON解析数据,以及数据存储方式
- android 解析服务器数据使用json还是xml方式
- jquery json xml关于解析两次json数据动态取值的处理方式
- iOS- JSon和Xml解析,与服务器交互数据的解析详解与使用,各种解析方式详解
- [Android]四种方式解析字符串----JSON、SAX、DOM、XML
- 在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull)
- DOM方式解析XML配置文件,将数据保存成数组
- Android解析XML(PULL方式)和JSON 工作原理和实现过程(详细代码)
- windows8开发-metro应用中使用xml+json作为数据存储方式
- WindowsPhone中XML和Json格式的数据解析