Cocos2d-x中自定义XML的读取和写入

本文介绍了Cocos2d-x中自定义XML的读取和写入方法,包括设置和读取属性、命名空间、限定名的概念。同时,详细讲解了SAX和DOM两种XML解析方式,包括SAX的SAXParser和DOM的XMLElement类,以及它们的主要函数和操作XML的属性、节点的方法。
摘要由CSDN通过智能技术生成
XML数据交互格式
特点:自描述,不如JSON轻便,老牌,经典,灵活,其他领域,应用广泛。
文档结构:每一个数据都有开始借宿标签:<Flag>...</Flag>其中, Flag表示键,中间的部分表示值。
注意事项:文档结构要遵守一定的格式规范,只有严格按规范编写的XML文档才是有效的文档。
格式:
1⃣️声明: XMLDeclaration
形如<?xml version=“1.0" encoding="UTF-8”?>;它定义了xml文件的版本和使用的编码字符集。
2⃣️根元素:
XMLElement *rootEle=pdoc-> RootElement ();获取根元素
根元素只有一个,开始和结束标签必须一致;
3⃣️子元素:构成多叉树的基本元素,由开始标签和结束标签括起来,<date>...</date>
如果之间没有内容,就会形成空标签</date>
4⃣️属性:定义在开始标签中,属性值必须放置在单引号或者双引号之间,一个元素不能有多个相同名字的属性。
写属性:

plistElement->SetAttribute("version", "1.0”);

读属性

 float value=0.1;

    rootEle->QueryFloatAttribute("version",&value);

    //设置version的属性值

    rootEle->SetAttribute("version",1.4);

5⃣️命名空间:用于一个XML文档中提供名字唯一的元素和属性,一般定义在元素的开始标签中。

形如:<soap:Envelope xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/">

6⃣️限定名:由命名空间引出的概念,定义了元素和属性的合法标识符。通常在xml文档中用作特定元素或属性的引用。

一般存在于开始标签的开头,如<soap:Body>...</soap:Body>;


解析方式1⃣️-SAX解析

无需导头文件

特点:基于事件驱动的解析方式;只能读,不能写;编程难;解析速度快;ios官方重点推荐。

两个类:SAXParser类和SAXDelegator,SAXDelegator是个抽象类,是SAXParser的委托对象,他们的设计基于委托设计模式。

工作原理:SAXDelegator提供接口,定义很多回调函数,解析工作在SAXDelegator子类中完成,遍历过程中,遇到开始,结束标签和字符串等,都会触发这些函数。在子类中实现这些抽象函数。

重点:三个触发函数:

    virtual void startElement(void *ctx, const char *name, const char **atts) = 0;

//遇到一个开始标签时触发.ctx:上下文对象,实质就是SAXParser对象,name是元素名字,atts为元素实现

    virtual void endElement(void *ctx, const char *name) = 0;

//遇到一个结束标签时触发

    virtual void textHandler(void *ctx, const char *s, int len) = 0;

//遇到字符串时触发,ctx上下文对象,s为遇到的字符串,len字符串长度。

开始和结束函数一般成对出现,之间可以触发多次字符串函数。

class CC_DLL SAXParser

{

    SAXDelegator*    _delegator;

public:

    SAXParser();

    ~SAXParser(void</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值