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"]);

时间: 2024-10-13 17:34:16

XML数据 JSON数据 LitJSON 数据 的编写和解析 小结的相关文章

kettle(PDI)解析xml、json等格式数据的方法

最近由于工作业务需要,一直在研究pdi工具中解析xml.json等格式数据的方法,解析xml和json都较简单. 解析xml的时候,只需要选择相应的文件(不一定要是xml文件,txt的也行,只要是数据是xml格式就可以),然后选择循环读取路径,设置好标签对名称即可: 一:选择文件,如果xml数据是上一过程输入的,不用选择文件: 二:选择循环解析xml的节点,你所选择的节点应该是所以数据的根节点: 三:设置好对应的节点名称和数据名称: 保存配置后,运行即可. 对应的解析json也类似xml的解析:

第十五讲.数据解析(XML与JSON两种数据解析)

一.XML数据解析 1.SAX:Simple API for XML.基于事件驱动的解析方式,逐行解析数据.(采用协议回调机制) NSXMLParser的解析方法: 1 #import "ViewController.h" 2 #import "Model.h" 3 4 @interface ViewController ()<NSXMLParserDelegate> 5 6 @property(nonatomic,strong)UITableView

javascript 解析ajax返回的xml和json格式的数据

写个例子,以备后用 一.JavaScript 解析返回的xml格式的数据: 1.javascript版本的ajax发送请求 (1).创建XMLHttpRequest对象,这个对象就是ajax请求的核心,是ajax请求和响应的信息载体,单是不同浏览器创建方式不同 (2).请求路径 (3).使用open方法绑定发送请求 (4).使用send() 方法发送请求 (5).获取服务器返回的字符串   xmlhttpRequest.responseText; (6).获取服务端返回的值,以xml对象的形式存

大数据技术之_19_Spark学习_02_Spark Core 应用解析小结

1.RDD 全称 弹性分布式数据集 Resilient Distributed Dataset它就是一个 class. abstract class RDD[T: ClassTag](    @transient private var _sc: SparkContext,    @transient private var deps: Seq[Dependency[_]]  ) extends Serializable with Logging { 继承了 Serializable 和具有 L

大数据技术之_19_Spark学习_06_Spark 源码解析小结

========== Spark 通信架构 ========== 1.spark 一开始使用 akka 作为网络通信框架,spark 2.X 版本以后完全抛弃 akka,而使用 netty 作为新的网络通信框架.最主要原因:spark 对 akka 没有维护,需要 akka 更新,spark 的发展受到了 akka 的牵制,akka 版本之间无法通信,即 akka 兼容性问题.2.RpcEnv:RPC 上下文环境,每个 Rpc 端点运行时依赖的上下文环境称之为 RpcEnv.类似于 SparkC

大数据技术之_19_Spark学习_05_Spark GraphX 应用解析小结

========== Spark GraphX 概述 ==========1.Spark GraphX是什么?  (1)Spark GraphX 是 Spark 的一个模块,主要用于进行以图为核心的计算还有分布式图的计算.  (2)GraphX 他的底层计算也是 RDD 计算,它和 RDD 共用一种存储形态,在展示形态上可以以数据集来表示,也可以图的形式来表示. 2.Spark GraphX 有哪些抽象?(1)顶点.   顶点的表示用 RDD[(VertexId, VD)] 来表示,(Verte

PHP接口数据的封装XML和JSON

使用PHP开发app后端的接口时,我们需要返回数据,最常用的就是XML和JSON格式的数据,那么样返回呢? 1.JSON json数据是最容制造的,只要使用php自带的json_encode()函数就可以简单的制作出json数据了 2.XML xml数据就要复杂一点了,让我们看一下xml数据的格式 那么怎样构造呢? 3.制作生产接口数据的类 <?php //定义生成接口数据类 class Api { /* * 生成json数据格式 * @param integer $code 状态码 * @pa

Android读写JSON格式的数据之JsonWriter和JsonReader

最近的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.最近打算找一份Android的工作,要继续拾起以前的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才开始办公.不说这些了,下面开始今天的正文. JSON格式的数据通常用于网络传输,尤其是在移动设备上与服务端进行数据交互.JSON与XML比较有明显的优势.XML格式的数据非常臃肿,传递少量的数据就要附带很多额外的格式数据.而JSON除了少量的符号外,全部是真正的数据,所以有越来越多的程序用JSON来取代XM

两种接口传送数据协议(xml和json)

规范性接口开发中,一般数据是以json或者xml的格式传送的,而不是字符串的形式直接返回给接口调用者:下面介绍这两种格式的编写方法. 下面两种数据传送方式是接口输出端的编写.需引入的包如下: <span style="font-family:KaiTi_GB2312;font-size:18px;">importjava.io.PrintWriter; importjava.io.StringWriter; importjavax.servlet.http.HttpServ