【官方文档】Cocos2d-x xml解析

【官方文档】Cocos2d-x xml解析,第1张

概述转载自 zeroyang2014-07-31      CCLOG("%s",filePath.c_str());     // /Users/niezhao/Library/Developer/CoreSimulator/Devices/DD86FD72-6CE2-4459-8A4D-70D7C027F10D/data/Containers/Data/Application/8EC0197B-2

转载自 zeroyang2014-07-31

cclOG("%s",filePath.c_str());

// /Users/nIEzhao/library/Developer/CoreSimulator/Devices/DD86FD72-6CE2-4459-8A4D-70D7C027F10D/data/Containers/Data/Application/8EC0197B-2A8B-407A-9D97-8ABC662A29B0/documents/2bbb.xml




Cocos2d-x 已经加入了tinyxml2用于xml的解析。3.0版本位于external/tinyxml2下。2.x版本位于cocos2dx/support/tinyxml2下。

tinyxml2 Github地址:https://github.com/leethomason/tinyxml2

帮助文档地址:http://grinninglizard.com/tinyxml2docs/index.html

生成xml文档

引入头文件

1 2 #include "tinyxml2/tinyxml2.h" using namespace tinyxml2;

xml文档生成

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
voID HelloWorld::makeXML( const char *filename) { std::string filePath = fileUtils::getInstance()->getWritablePath() + filename; XMLdocument *pDoc = new XMLdocument(); //xml 声明(参数可选) XMLDeclaration *pDel = pDoc->NewDeclaration( "xml version=\"1.0\" enCoding=\"UTF-8\"" ); pDoc->linkEndChild(pDel); //添加pList节点 XMLElement *pListElement = pDoc->NewElement( "pList" ); pListElement->SetAttribute( "version" , "1.0" ); pDoc->linkEndChild(pListElement); XMLComment *commentElement = pDoc->NewComment( "this is xml comment" ); pListElement->linkEndChild(commentElement); //添加dic节点 XMLElement *dicElement = pDoc->NewElement( "dic" ); pListElement->linkEndChild(dicElement); //添加key节点 XMLElement *keyElement = pDoc->NewElement( "key" ); keyElement->linkEndChild(pDoc->NewText( "Text" )); dicElement->linkEndChild(keyElement); XMLElement *arrayElement = pDoc->NewElement( "array" ); dicElement->linkEndChild(arrayElement); for ( int i = 0; i<3; i++) { XMLElement *elm = pDoc->NewElement( "name" ); elm->linkEndChild(pDoc->NewText( "Cocos2d-x" )); arrayElement->linkEndChild(elm); } pDoc->Savefile(filePath.c_str()); pDoc->Print(); delete pDoc; }







打印结果

<?xml version="1.0" enCoding="UTF-8"?>
<pList version="1.0">
<!--this is xml comment-->
<dic>
<key>Text</key>
<array>
<name>Cocos2d-x</name>
<name>Cocos2d-x</name>
<name>Cocos2d-x</name>
</array>
</dic>
</pList>

上面代码使用tinyxml简单生成了一个xml文档。

解析xml

下面我们就来解析上面创建的xml文档

引入头文件

namespacetinyxml2;

xml解析

35
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) { //xml格式错误 return ; } XMLElement *rootEle = pDoc->RootElement(); //获取第一个节点属性 const XMLAttribute *attribute = rootEle->FirstAttribute(); //打印节点属性名和值 log ( "attribute_name = %s,attribute_value = %s" ,attribute->name(),attribute->Value()); XMLElement *dicEle = rootEle->FirstChildElement( "dic" ); XMLElement *keyEle = dicEle->FirstChildElement( "key" ); if (keyEle) { log ( "keyEle Text= %s" ,keyEle->GetText()); } XMLElement *arrayEle = keyEle->NextSiblingElement(); XMLElement *childEle = arrayEle->FirstChildElement(); while ( childEle ) { log ( "childEle Text= %s" ,childEle->GetText()); childEle = childEle->NextSiblingElement(); } delete pDoc; }

在节点解析过程中,注意对获取到的节点进行判空处理。

解析结果打印

5
cocos2d: attribute_name = version,attribute_value = 1.0 cocos2d: keyEle Text= Text cocos2d: childEle Text= Cocos2d-x cocos2d: childEle Text= Cocos2d-x cocos2d: childEle Text= Cocos2d-x
小结

上面的简单示例,演示了如何使用tinyxml进行xml文档生成和解析。更多详细的帮助请参考 tinyxml帮助文档http://grinninglizard.com/tinyxml2docs/index.html

总结

以上是内存溢出为你收集整理的【官方文档】Cocos2d-x xml解析全部内容,希望文章能够帮你解决【官方文档】Cocos2d-x xml解析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1028637.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存