Xml与Json的使用

一.使用Json的时候需要引入一个动态链接库LitJson百度一下都能找到,放在程序目录即可使用

1.首先我们创建一个XMl文件

public void createXML()
{
//xml保存的路径,放在asset的路径下面
string filepath = Application.dataPath + @"/test.xml";
//判断当前路径下是否有该文件
if(!File.Exists(filepath))
{
//创建xml文档实例
XmlDocument xmlDoc = new XmlDocument();
//创建root节点,也就是最上一层节点
XmlElement root = xmlDoc.CreateElement("transforms");
//继续创建下一层节点
XmlElement elmItem = xmlDoc.CreateElement("rotation");
//设置节点的两个属性ID与Name
elmItem.SetAttribute("id", "0");
elmItem.SetAttribute("name", "colo");

//继续创建下一层节点

XmlElement rotation_X = xmlDoc.CreateElement("x");
//设置节点数值
rotation_X.InnerText = "0";

XmlElement rotation_Y = xmlDoc.CreateElement("y");
//设置节点数值
rotation_Y.InnerText = "1";

XmlElement rotation_Z = xmlDoc.CreateElement("z");
//设置节点数值
rotation_Z.InnerText = "2";
rotation_Z.SetAttribute("id", "1");

//把创建的节点添加到xmldoc中
elmItem.AppendChild(rotation_X);
elmItem.AppendChild(rotation_Y);
elmItem.AppendChild(rotation_Z);
root.AppendChild(elmItem);
xmlDoc.AppendChild(root);
//把xml保存到本地
xmlDoc.Save(filepath);
Debug.Log("Create Xml Ok !");

}
}

2.接着我们就有可以根据我们创建的,来进行更新xml的内容

public void UpdateXml()
{
string filepath = Application.dataPath + @"/test.xml";
if(File.Exists(filepath))
{
//创建xml文档实例
XmlDocument xmlDoc = new XmlDocument();
//根据路径将xml读取出来
xmlDoc.Load(filepath);
//得到transform下面的所有子节点
XmlNodeList nodelist = xmlDoc.SelectSingleNode("transforms").ChildNodes;
//遍历所有子节点
foreach (XmlElement item in nodelist)
{
//取得子节点中id = 0的节点
if(item.GetAttribute("id") == "0")
{
//更新子节点
item.SetAttribute("id", "520");
//继续遍历id = 0的节点的子节点
foreach (XmlElement xe in item.ChildNodes)
{
if(xe.Name == "z")
{
xe.SetAttribute("id", "521");
xe.InnerText = "coloooo";
}
}
break;
}
}
xmlDoc.Save(filepath);
Debug.Log("Update Xml Ok!");
}
}

3.我们也可以对xml再次添加,跟一开始创建的程序差不多

public void AddXml()
{
string filepath = Application.dataPath + @"/test.xml";

if(File.Exists(filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);

XmlNode root = xmlDoc.SelectSingleNode("transforms");
XmlElement elemNew = xmlDoc.CreateElement("rotation");
elemNew.SetAttribute("id", "1");
elemNew.SetAttribute("name", "xolooo");

XmlElement rotation_x = xmlDoc.CreateElement("x");
rotation_x.InnerText = "0";
rotation_x.SetAttribute("id", "0000");
XmlElement rotation_y = xmlDoc.CreateElement("y");
rotation_y.InnerText = "1";
XmlElement rotation_z = xmlDoc.CreateElement("z");
rotation_z.InnerText = "2";

elemNew.AppendChild(rotation_x);
elemNew.AppendChild(rotation_y);
elemNew.AppendChild(rotation_z);
root.AppendChild(elemNew);
xmlDoc.AppendChild(root);
xmlDoc.Save(filepath);
Debug.Log("AddXml Ok !");
}

}

4.对我们之前的xml进行删除处理

public void DeleteXml()
{
string filepath = Application.dataPath + @"/test.xml";
if(File.Exists(filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);

XmlNodeList nodeList = xmlDoc.SelectSingleNode("transforms").ChildNodes;
foreach (XmlElement item in nodeList)
{
if(item.GetAttribute("id") == "1")
{
item.RemoveAttribute("id");
}
foreach (XmlElement xe in item)
{
if(xe.Name == "z")
{
xe.RemoveAll();
}
}
}
xmlDoc.Save(filepath);
Debug.Log("deleteXMl Ok!");
}
}

5.对xml进行整体输出

public void ShowXml()
{
string filepath = Application.dataPath + @"/test.xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);

XmlNodeList nodeList = xmlDoc.SelectSingleNode("transforms").ChildNodes;
foreach (XmlElement item in nodeList)
{
Debug.Log("Name :" + item.Name + "\n" + "Attribute :" + item.GetAttribute("name"));
//Debug.Log("Name :" + item.Name);
foreach (XmlElement xe in item.ChildNodes)
{
if(xe.Name == "y")
{
Debug.Log("y of " + item.GetAttribute("name") + " :" + xe.InnerText);
}
}
}
Debug.Log("all =" + xmlDoc.OuterXml);
}

6.Json字符串的自定义(字符串定义,还有程序定义,步骤7中介绍),以及对json的输出,此时需要强调的是Json的格式

public void ResolveJson()
{
//定义Json字符串
string str = @"
{
""Name"" : ""coqoooo"",
""Age"" : 20,
""Birthday"" : ""1995-1-1"",
""Thu"" : [
{
""Url"": ""http1"",
""Height"": 251
},
{
""Url"": ""http2"",
""Height"": 252
}

]
}";

//解析
JsonData jd = JsonMapper.ToObject(str);
Debug.Log("Name = " + jd["Name"]);
Debug.Log("Age = " + jd["Age"]);
Debug.Log("Birthday = " + jd["Birthday"]);
JsonData jdItems = jd["Thu"];

for (int i = 0; i < jdItems.Count; i ++)
{
Debug.Log("Url = " + jdItems[i]["Url"]);
Debug.Log("Height = " + jdItems[i]["Height"]);
}

}

7.Json创建的第二种方式,这种方式适用于少量item的,如果多了建议还是步骤6的方式

public void MergerJson()
{
//合成Json字符串,先合成然后在输出
StringBuilder sb = new StringBuilder();
JsonWriter writer = new JsonWriter(sb);

writer.WriteObjectStart();

writer.WritePropertyName("Name");
writer.Write("CQ");

writer.WritePropertyName("Age");
writer.Write(26);

writer.WritePropertyName("Girl");

writer.WriteArrayStart();

writer.WriteObjectStart();
writer.WritePropertyName("name");
writer.Write("rourou");
writer.WritePropertyName("age");
writer.Write(22);
writer.WriteObjectEnd();

writer.WriteObjectStart();
writer.WritePropertyName("name");
writer.Write("loulou");
writer.WritePropertyName("age");
writer.Write(23);
writer.WriteObjectEnd();

writer.WriteArrayEnd();

writer.WriteObjectEnd();
Debug.Log(sb.ToString());

}

时间: 2024-11-10 11:32:18

Xml与Json的使用的相关文章

WebApi接口 - 响应输出xml和json

格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点赞谢谢: . 自定义一个Action,响应输出集合数据 . api返回json数据的两种方式 . json时间格式处理方式 . 让api接口支持返回json和xml数据 下面一步一个脚印的来分享: . 自定义一个Action,响应输出集合数据 首先,我们新建一个webapi项目,新建好以后我们能够找

Android开发学习之路--网络编程之xml、json

一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载xampp,然后安装之类的就不再多讲了,参考http://cnbin.github.io/blog/2015/06/05/mac-an-zhuang-he-shi-yong-xampp/.安装好后,启动xampp,之后在浏览器输入localhost或者127.0.0.1就可以看到如下所示了: 这个就

XML和JSON比较

目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生:相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你之前已经听说过,但对于XML和 JSON的不同之处可能会不怎么了解.对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的,虽然JSON才处于起步阶段,但我相信JSON最终会取代XML成为Ajax的首选,到时Ajax可能要更名为Ajaj(Asynchronous

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

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

C/C++使用libcurl库发送http请求(get和post可以用于请求html信息,也可以请求xml和json等串)

C++要实现http网络连接,需要借助第三方库,libcurl使用起来还是很方便的 环境:win32 + vs2015 如果要在Linux下使用,基本同理 1,下载编译libcurl 下载curl源码,找到vs工程,按照x86 x64 并对应debug和release编译出静态库lib 2,构建工程 1)curl头文件和lib拷贝到工程目录 2)配置附加包含目录libcurl中的include和附加库目录libcurl中的lib目录 3)添加预编译宏USE_OPENSSL和CURL_STATIC

C#中XML和json互相转换

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xml; using Newtonsoft;//此方法需单独下载 namespace ThumbsLotteryTicket.MyMethond { public class XML_JSON { /// <summary> /// 返回指定节点下信息的JSON格式字符串 /// </summa

XStream解析xml和json

XStream是一个在我看来比较好的一个第三方包了.因为它在解析时支持注解.这样很是方便,并且xml跟json这两种格式的文件都能进行解析,XStream本属于java的一个第三方包,甚是好用,若是拿它在android开发环境,也是能正常解析,但有点美中不足,因为android开发环境时,XStream不太支持json转对象,只支持对象转json,其他xml与对象的互转都支持.这样的话双解析就有了那么一点瑕疵之处,不过话说回来,没多少需求的数据交互会用json跟xml切来切去的,当只是json转

ASP.NET中XML转JSON的方法

原文:ASP.NET中XML转JSON的方法 许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理.要实现这一点,它们必须将XML格式转换为JSON格式. XML转JSON代码 [csharp] view plaincopy private static string XmlToJSON(XmlDocument xmlDoc) { StringBuilder sbJSON = new StringBuilder(); sbJSON.Append("{ &

将场景导出XML或JSON或二进制并且解析还原场景

导出unity场景的所有游戏对象信息,一种是XML一种是JSON.本篇文章我们把游戏场景中游戏对象的.旋转.缩放.平移与Prefab的名称导出在XML与JSON中.然后解析刚刚导出的XML或JSON通过脚本把导出的游戏场景还原.在Unity官网上下载随便下载一个demo Project,如下图所示这是我刚刚在官网上下载的一个范例程序. 接着将层次视图中的所有游戏对象都封装成Prefab保存在资源路径中,这里注意一下如果你的Prefab绑定的脚本中有public Object 的话 ,需要在代码中

XML与JSON

在我们做各个系统和各个服务端的数据交互的时候会遇到其中两种数据格式,那就是xml和json,下面来谈谈这两种数据模式. XML 什么是xml? XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分. 您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为可识别.可分类的信息.您创建的文件,或文档实例 由元素(标记)和内容构成.元素的描述性越强,文档各部分越容易识别. 构建XML          1.XML