cocos2d-x 3.2读取xml和json练习
读取和生成xml文件:
#include "tinyxml2/tinyxml2.h"
using namespace tinyxml2; void HelloWorld::makeXml(const char* fileName)
{
//写入路径
std::string filePath = FileUtils::getInstance()->getWritablePath() + fileName;
XMLDocument *pDoc = new XMLDocument();
//头声明
XMLDeclaration *pDecl = pDoc->NewDeclaration("xml=version=\"1.0\" encoding=\"UTF-8\"");
pDoc->LinkEndChild(pDecl);
//注释
XMLComment *pCom = pDoc->NewComment("test xml");
pDoc->LinkEndChild(pCom); XMLElement *plistEl = pDoc->NewElement("plist");
plistEl->SetAttribute("version", "1.0");
plistEl->SetAttribute("age", 10);
pDoc->LinkEndChild(plistEl); XMLElement *dictEl = pDoc->NewElement("dict");
plistEl->LinkEndChild(dictEl); XMLElement *keyEl = pDoc->NewElement("key");
keyEl->LinkEndChild(pDoc->NewText("keyValue"));
dictEl->LinkEndChild(keyEl); XMLElement *arrayEl = pDoc->NewElement("array");
dictEl->LinkEndChild(arrayEl);
for (int i = 0; i<2 ; i++)
{
XMLElement *nameEl = pDoc->NewElement("name");
nameEl->LinkEndChild(pDoc->NewText("array value"));
arrayEl->LinkEndChild(nameEl);
} pDoc->SaveFile(filePath.c_str());
pDoc->Print();
delete pDoc;
} void HelloWorld::parseXml(const char* fileName)
{
std::string filePath = FileUtils::getInstance()->getWritablePath() + fileName;
XMLDocument *pDoc = new XMLDocument();
XMLError errorID = pDoc->LoadFile(filePath.c_str());
if (errorID != 0)
{
return;
} XMLElement *rootEl = pDoc->RootElement();
const XMLAttribute *attribute = rootEl->FirstAttribute();
while (attribute)
{
CCLOG("name=%s, value = %s", attribute->Name(), attribute->Value());
attribute = attribute->Next();
} XMLElement *dictEl = rootEl->FirstChildElement("dict");
XMLElement *keyEl = dictEl->FirstChildElement("key");
if (keyEl)
{
CCLOG("key el is = %s", keyEl->GetText());
} XMLElement *arrayEl = keyEl->NextSiblingElement();
XMLElement *childEl = arrayEl->FirstChildElement();
while (childEl)
{
CCLOG("child el is = %s", childEl->GetText());
childEl = childEl->NextSiblingElement();
} }
读取和生成json
#include "json/rapidjson.h"
#include "json/document.h"
#include "json/writer.h"
#include "json/stringbuffer.h"
例子:
void ReadAndWriteJsonScene::readJson()
{
std::string name = "testJson.json";
rapidjson::Document doc;
if (!FileUtils::getInstance()->isFileExist(name))
{
CCLOG("file is not exist");
return;
} std::string data = FileUtils::getInstance()->getStringFromFile(name);
doc.Parse<rapidjson::kParseDefaultFlags>(data.c_str());
if (doc.HasParseError() || !doc.IsArray())
{
return;
} for (auto i = 0; i<doc.Size(); i++)
{
rapidjson::Value &v = doc[i];
std::string name;
int age;
std::string sex;
if (v.HasMember("name"))
{
name = v["name"].GetString();
auto len = v["name"].GetStringLength();
CCLOG("name is %s, len is %d", name.c_str(), len);
} } } void ReadAndWriteJsonScene::writeJson()
{
rapidjson::Document doc;
doc.SetObject();
rapidjson::Document::AllocatorType &allocator = doc.GetAllocator();
rapidjson::Value arr(rapidjson::kArrayType);
rapidjson::Value obj(rapidjson::kObjectType);
obj.AddMember("int", 1, allocator);
obj.AddMember("double", 2.0, allocator);
obj.AddMember("bool", true, allocator);
obj.AddMember("hello", "xxxxx", allocator);
arr.PushBack(obj, allocator); doc.AddMember("strX", "jsonTest", allocator);
doc.AddMember("arr", arr, allocator); rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
doc.Accept(writer); CCLOG("buffer string = %s", buffer.GetString());
}
测试的json文件
[
{"name":"cl","age":27,"sex":"M"},
{"name":"cbsss","age":25,"sex":"W"},
{"name":"gx","age":25,"sex":"M"},
{"name":"hxl","age":27,"sex":"W"}
]
cocos2d-x 3.2读取xml和json练习的更多相关文章
- Ajax读取XML和JSON数据
Ajax从服务器获取的数据都是字符串,但是通过不同的解析,可以解析为XML或者JSON. 一般来说.使用XML格式的数据比较通用,但是服务器和客户端解析起来都比较复杂一些;而使用JSON语句话,服务端 ...
- [Network] HTML、XML和JSON学习汇总
写在前面:楼主也是刚刚接触这方面的知识,之前完全是零基础,后来经朋友推荐了几个不错的博文,看完以后豁然开朗.但是此博文更加偏重于基础知识介绍(其实更深的楼主也还不了解,这方面的大神请绕道),只是分享个 ...
- xml和json的区别
本文转自SanMaoSpace的博客 链接地址如下:http://www.cnblogs.com/SanMaoSpace/p/3139186.html 1.定义介绍 (1).XML定义扩展标记语言 ( ...
- 数据解析(XML和JSON数据结构)
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
- xStream完美转换XML、JSON
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...
- 【原】iOS学习之XML与JSON两种数据结构比较和各自底层实现
1.XML与JSON两种数据结构的优缺点 1> XML 优点: 格式统一, 符合标准 容易与其他系统进行远程交互, 数据共享比较方便 缺点: XML文件格式文件庞大, 格式复杂, 传输占 ...
- C#读取XML文件的方法
先写一个xml文件: <?xml version="1.0" encoding="utf-8" ?> <bookste> <!-- ...
- C#.NET序列化XML、JSON、二进制微软自带DLL与newtonsoft(json.net)
序列化是将对象转换成另一种格式(XML.json.二进制byte[]) JSON序列化 .NET中有三种常用的JSON序列化的类,分别是: Newtonsoft.Json.JsonConvert类(推 ...
- XML与JSON的对比
XML与JSON的对比 1.各自定义 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类 ...
随机推荐
- js各种间距数据汇总
clientX,offsetX,screenX,pageX区别 先总结下区别: event.clientX.event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不 ...
- R语言将5位数字日期转为正常日期
R语言中用double表示日期,即从1970-1-1距离给定日期的天数,将5位数字日期转为正常日期格式的方法 as.Date(16543,origin='1970-1-1')
- 【第二篇】.NET用NPOI读取Excel表格并在页面预览
博主用的是npoi2.0.1,支持.xls也支持.xlsx 直接上代码吧. <table class="table table-bordered table-striped" ...
- Cocoa & Cocoa Touch概念
Application Kit框架包括广泛的类和方法,它们用来开发交互式图形应用程序,使得开发文本/菜单/工具栏/表/文档/剪贴板和窗口之类的过程变得十分简便.在Mac OSX操作系统中,术语coco ...
- 使用mysql索引的规则
注意事项: 1)索引并不是越多越好 创建索引是会占用非常多的硬盘空间的,一般来说,一张表的索引的大小是其数据大小的2到3倍: 所以不要随便创建无用的索引,一般来说,只要给学用来做条件(where.or ...
- jstl表达式
JSTL标签库 1.什么是JSTL JSTL是apache对EL表达式的拓展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便, 它与JSP动作标签一样,只不过它不是JSP ...
- BZOJ 4557 侦查守卫
好迷的树形dp... #include<iostream> #include<cstdio> #include<cstring> #include<algor ...
- Wireshark基本介绍和学习TCP三次握手(转)
http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS. 这篇 ...
- geotools导出shapefile出错: java.io.IOException: Current fid index is null, next must be called before write()
geotools导出shapefile出错: java.io.IOException: Current fid index is null, next must be called before wr ...
- linux设置默认路由细节问题
在这里,我想给大家讲解下,linux系统默认路由的设置的一些细节问题.这样在设置多块网卡的时候如何设置路由可以为初学者少走一些弯路. 默认情况下配置多块网卡,每个网卡都要配置ip,每个ip又是在不 ...