XML数据 JSON数据 LitJSON 数据 的编写和解析 小结
用XML生成如下数据
<?xml version="1.0"encoding="UTF-8"?>
<Transform name="MyCube" >
<Position>
<X>11</X>
<Y>89</Y>
<Z>20</Z>
</Position>
</Transform>
操作如下 在C#脚本中
// 创建一个文档
XmlDocument doc = new XmlDocument ();
void Start (){
CreatXML ();
//创建文档
void CreatXML (){
//创建一个声明
XmlDeclaration dec = doc.CreateXmlDeclaration ("1.0", "UTF-8", null);
//讲声明拼接到文档中
doc.AppendChild (dec);
//创建一个根元素节点
XmlNode rootNode = doc.CreateNode (XmlNodeType.Element, "Transform", null);
//对根元素节点添加属性
XmlAttribute attr = doc.CreateAttribute ("name");
attr.Value = "YourCube";
rootNode.Attributes.SetNamedItem (attr);
//拼接到xml文档中
doc.AppendChild (rootNode);
//创建一个子元素Position添加到根元素节点中并拼接进去
XmlElement pos = doc.CreateElement ("Position");
rootNode.AppendChild (pos);
XmlElement pos_X = doc.CreateElement ("x");
XmlElement pos_Y = doc.CreateElement ("y");
XmlElement pos_Z = doc.CreateElement ("z");
pos_X.InnerText = "78";
pos_Y.InnerText = "18";
pos_Z.InnerText = "38";
pos.AppendChild (pos_X);
pos.AppendChild (pos_Y);
pos.AppendChild (pos_Z);
//保存保存 路径和名字
//Application.dataPath的路径就是Assets文件件 //内写的就是表示在这个文件夹下
doc.Save (Application.dataPath + "/XML/MonoCodeXML.xml");}
解析上述XML数据如下
//首先拿到文档的位置,用XML文档实例去加载文档
doc.Load (Application.dataPath + "/XML/MonoCodeXML.xml");
//根据数据结构来分析如果获得想要的数据
//第一步拿到根元素节点
XmlElement root = doc.DocumentElement;
print (root.Name);得到的是Transform
//root.FirstChild就是这一层下面你的第一个子元素的节点
//XmlNode Pos_X = root.FirstChild.FirstChild;
//X子节点中的存储的数据内容;
//string Pos_X_string = Pos_X.InnerText;
//print (Pos_X_string);//打印78
//或者同过层级路径拿到这个节点的内容
XmlNode pox_x = root.SelectSingleNode ("/Transform/Position/x");//打印78
/////////////////////////////////////////////////////////////
用JSON实现如下数据 需要添加一个插件System.Json
{ "HeroName": "诺克萨斯之手",
"Hero_Hp": 582.24,
"Attack": 55.88,
"Skills": [{
"key": "Q",
"SkillName": "大厦四方",
"CD": "9/8/7/6",
"MP": 30 }, {
"key": "W",
"SkillName": "致残打击",
"CD": "9/8/7/6",
"Mp": 30}, {
"key": "E",
"SkillName": "大厦四方",
"CD": "9/8/7/6",
"MP": 30 },{
"key": "R",
"SkillName": "断头台",
"CD": "9/8/7/6",
"MP": 30}}]}
//创建一个大括号using System.Json;
JsonObject nuoke = new JsonObject ();
//方便后面接受技能数组
JsonArray Skillarr = new JsonArray ();
JsonObject Skill_Q = new JsonObject ();
JsonObject Skill_W = new JsonObject ();
JsonObject Skill_E = new JsonObject ();
JsonObject Skill_R = new JsonObject ();
//给每一个Json技能添加相应属性
//技能1
Skill_Q.Add ("key", "Q");
Skill_Q.Add ("Skill", "大杀四方");
Skill_Q.Add ("CD", "9/8/7/6");
Skill_Q.Add ("MP", "30");
//技能2
Skill_W.Add ("key", "W");
Skill_W.Add ("Skill", "致残打击");
Skill_W.Add ("CD", "9/8/7/6");
Skill_W.Add ("MP", "30");
//技能3
Skill_E.Add ("key", "E");
Skill_E.Add ("Skill", "无情铁手");
Skill_E.Add ("CD", "9/8/7/6");
Skill_E.Add ("MP", "30");
//技能4
Skill_R.Add ("key", "R");
Skill_R.Add ("Skill", "断头台");
Skill_R.Add ("CD", "9/8/7/6");
Skill_R.Add ("MP", "30");
//把四个技能添加给数组
Skillarr.Add (Skill_Q);
Skillarr.Add (Skill_W);
Skillarr.Add (Skill_E);
Skillarr.Add (Skill_R);
//添加Key-Value 按照顺序来
nuoke.Add ("HeroName", "诺克杀死之手");
nuoke.Add ("Hero_HP", "584.23");
nuoke.Add ("Attack", 22.88);
nuoke.Add ("Skills", Skillarr);
//扩展引用using System.IO;
//创建数据令的写入//using System.IO;
StreamWriter writer = new StreamWriter (Application.dataPath + "/JSion/MySystemJson.txt");
nuoke.Save (writer);
//自动缓冲
writer.AutoFlush = true;
//关闭
writer.Close ();
//刷新一下自动出现不用手动刷新引用编辑器 using UnityEditor;
AssetDatabase.Refresh ();
解析上述数据
void ParseJsonDate (){
//本地文件的读取
FileInfo file = new FileInfo (Application.dataPath + "/JSion/MySystemJson.txt");
//using System.Text;才能电池Encoding
StreamReader reader = new StreamReader (file.OpenRead (), Encoding.UTF8);
string str = reader.ReadToEnd ();
reader.Close ();
//释放资源
reader.Dispose ();
//开始解析
HeroInfo m_heroInfo = JsonUtility.FromJson<HeroInfo> (str);
print (m_heroinfo.Skills [3].SkillName);}
//闯将数据模型,接受解析的数据
//将来我们在需要数据的地方直接点出来
//引用using System;
[Serializable]
public class SkillKV{
public string key = "";
public string Skill = "";
public string CD = "";
public string MP = "";}
[Serializable]//修饰对象作用是将对象统一序列化为二进制的数据流的byte[]
public class HeroInfo{
public string HeroName = "";
public float Hero_HP = 0f;
public float Attack = 0f;
public List<SkillKV> Skills = new List<SkillKV> ();}
用LitJSON 写出来就是 添加一个插件LitJson
//引用using LitJson;
//创建一个JSON结构的数据
JsonData nuoks = new JsonData ();
nuoks ["HeroName"] = "诺克萨斯之手";
nuoks ["HeroHP"] = 583.55;
nuoks ["Attack"] = 100.39;
//创建一个新的内包含 随后的技能直接让["Skills"].add()
nuoks ["Skills"] = new JsonData ();
//小技能
JsonData Skill_Q = new JsonData ();
Skill_Q ["key"] = "Q";
Skill_Q ["SkillName"] = "大杀四方";
Skill_Q ["CD"] = "9/8/7/6";
Skill_Q ["MP"] = "30";
JsonData Skill_W = new JsonData ();
Skill_W ["key"] = "W";
Skill_W ["SkillName"] = "大杀四方";
Skill_W ["CD"] = "9/8/7/6";
Skill_W ["MP"] = "30";
JsonData Skill_E = new JsonData ();
Skill_E ["key"] = "Q";
Skill_E ["SkillName"] = "大杀四方";
Skill_E ["CD"] = "9/8/7/6";
Skill_E ["MP"] = "30";
JsonData Skill_R = new JsonData ();
Skill_R ["key"] = "R";
Skill_R ["SkillName"] = "大杀四方";
Skill_R ["CD"] = "9/8/7/6";
Skill_R ["MP"] = "30";
nuoks ["Skills"].Add (Skill_Q);
nuoks ["Skills"].Add (Skill_W);
nuoks ["Skills"].Add (Skill_E);
nuoks ["Skills"].Add (Skill_R);
string path = Application.dataPath + "/exercise/LitjsonStudy.txt";
//文件创建一个文本
FileStream file = new FileStream (path, FileMode.Create);
//得到字符串的UTF8数据流 引用using System.Text;
byte[] bts = System.Text.Encoding.UTF8.GetBytes (nuoks.ToJson ());
file.Write (bts, 0, bts.Length);
if (file != null) {
//清空缓冲
file.Flush ();
//关闭流
file.Close ();
//销毁资源
file.Dispose ();}
//刷新一下自动出现引用编辑器 using UnityEditor;
AssetDatabase.Refresh ();
解析就是如下
StreamReader reader = new StreamReader (Application.dataPath + "/exercise/LitjsonStudyTwo.txt");
string str = reader.ReadToEnd ();
reader.Close ();
reader.Dispose ();
JsonData date = JsonMapper.ToObject (str);
print (date ["skills"] [0] ["SkillName"]);
XML数据 JSON数据 LitJSON 数据 的编写和解析 小结的更多相关文章
- XML和JSON两种数据交换格式的比较
在web开发领域,主要的数据交换格式有XML和JSON,对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的.一般都输出Json不输出xml,原因就是因为 x ...
- 使用Boost.PropertyTree处理XML、JSON和INI数据
Boost.PropertyTree 应该是 Boost 1.41.0 开始正式加入 Boost 版本的.目前 ( 2010/02/28 ) 能下到的最新版本是 1.42.0. 主要作用/应用场合 B ...
- javascript 解析ajax返回的xml和json格式的数据
写个例子,以备后用 一.JavaScript 解析返回的xml格式的数据: 1.javascript版本的ajax发送请求 (1).创建XMLHttpRequest对象,这个对象就是ajax请求的核心 ...
- 发送xml或json格式的数据给服务器
后台通过context.Request.InputStream来接收 #region 发送消息 + void SendMessage() /// <summary> /// 发送消息 // ...
- 大数据技术之_19_Spark学习_03_Spark SQL 应用解析小结
========== Spark SQL ==========1.Spark SQL 是 Spark 的一个模块,可以和 RDD 进行混合编程.支持标准的数据源.可以集成和替代 Hive.可以提供 J ...
- 大数据技术之_19_Spark学习_02_Spark Core 应用解析小结
1.RDD 全称 弹性分布式数据集 Resilient Distributed Dataset它就是一个 class. abstract class RDD[T: ClassTag]( @tra ...
- 大数据技术之_19_Spark学习_04_Spark Streaming 应用解析小结
========== Spark Streaming 是什么 ==========1.SPark Streaming 是 Spark 中一个组件,基于 Spark Core 进行构建,用于对流式进行处 ...
- Android读写JSON格式的数据之JsonWriter和JsonReader
近期的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.近期打算找一份Android的工作,要继续拾起曾经的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才開始办公 ...
- 001-RESTful服务最佳实践-RestFul准则、HTTP动词表示含义、合理的资源命名、响应格式XML和JSON
一.概述 因为REST是一种架构风格而不是严格的标准,所以它可以灵活地实现.由于这种灵活性和结构自由度,对设计最佳实践也有很大的差异. API的方向是从应用程序开发人员的角度考虑设计选择. 幂等性 不 ...
随机推荐
- ERROR actor.OneForOneStrategy: org.apache.spark.SparkContext
今天在用Spark把Kafka的数据往ES写的时候,代码一直报错,错误信息如下: 15/10/20 17:28:56 ERROR actor.OneForOneStrategy: org.apache ...
- windows下安装php5.5的redis扩展
windows下开发用的xampp集成的环境,想装个php-redis扩展,扩展的github地址: https://github.com/nicolasff/phpredis php_redis. ...
- java中Collection和Collections的区别
1.Collection: 它是java集合类的一个通用接口,所有集合类都实现的它 2.Collections: 它是一个封装集合类常用工具方法的类,不能被示例化,只支持静态调用
- 一键配置openvpn
页面:https://github.com/Nyr/openvpn-install openvpn-install OpenVPN road warrior installer for Debian, ...
- char、varchar、text和nchar、nvarchar、ntext的区别
1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的 ...
- Struts2:MyEclippse中使用struts-default.xml中定义的拦截器(timmer,logger)
环境:MyEclipse 2015 Stable 2.0:struts2-core-2.3.16.1.jar等 struts.xml <struts> <package name=& ...
- XML Schema命名空间解析
URI Web中汇集了各种资源.资源可以是具有标识的任何事物, 如文档. 文件. 菜单项. 计算机. 服务等, 甚至可以包括人. 组织和概念[BernersLee 1998].在Web体系结构中, ...
- MyBatis学习总结(七)——Mybatis缓存(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...
- Mariadb 在centos 7下的安装配置
安装Mariadb数据库: sudo yum install mariadb-server 启动数据库: sudo systemctl start mariadb 设置自动启动: sudo syste ...
- tls/ssl证书生成和格式转换
生成密钥:openssl genrsa -out my.key 2048 生成csr申请文件:openssl req -sha256 -new -key my.key -out my.csr 生成自签 ...