tinyxml2 xml

 //一:创建xml并保存


 //要储存XML文件的路径
 std::string filePath = "wociao.xml";
 //xml文档
 tinyxml2::XMLDocument* pDoc = new tinyxml2::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);
 //节点dict
 XMLElement *dictElement = pDoc->NewElement("dict");
 plistElement->LinkEndChild(dictElement);
 //节点key
 XMLElement *keyElement = pDoc->NewElement("key");
 keyElement->LinkEndChild(pDoc->NewText("keyText"));//给节点设置值
 dictElement->LinkEndChild(keyElement);
 //节点string
 XMLElement *stringElement = pDoc->NewElement("string");
 stringElement->LinkEndChild(pDoc->NewText("stringText"));//给节点设置值
 dictElement->LinkEndChild(stringElement);
 //节点array
 XMLElement *arrayElemet = pDoc->NewElement("array");
 dictElement->LinkEndChild(arrayElemet);
 for (int i = 0; i<3; i++) {
  XMLElement *strEle = pDoc->NewElement("string");
  strEle->LinkEndChild(pDoc->NewText("icon"));
  arrayElemet->LinkEndChild(strEle);
 }

 pDoc->SaveFile(filePath.c_str());//保存文件 参数:路径
 pDoc->Print();//打印
 delete pDoc;

 //二:解析xml
 //1、空元素可以省略开始标记
 //2、字符串一般不会作为属性值 而是节点值
 //xml文件路径
 std::string filePath01 = "wociao.xml";
 //xmlDoc
 tinyxml2::XMLDocument *pDoc01 = new tinyxml2::XMLDocument();
 pDoc01->LoadFile(filePath01.c_str());
 //得到跟节点
 XMLElement *rootEle = pDoc01->RootElement();
 //打印节点的值
 CCLog("%s", rootEle->GetText());
 //节点的第一个属性
 const XMLAttribute *attribute = rootEle->FirstAttribute();
 //打印属性的名字和值
 CCLog("%s %s", attribute->Name(), attribute->Value());
 //查找节点的属性值
 float value = 0.1f;
 rootEle->QueryFloatAttribute("version", &value);
 CCLog("%f", value);
 //设置节点属性值
 rootEle->SetAttribute("version", 1.4);
 //跟节点的第一个字节点 dict
 XMLElement *dictEle = rootEle->FirstChildElement();
 //dict下面的子节点 key
 XMLElement *keyEle = dictEle->FirstChildElement();
 //打印key节点的值
 CCLog("%s,%s", keyEle->Name(), keyEle->GetText());
 //key节点的next节点 string
 XMLElement *stringEle = keyEle->NextSiblingElement();
 CCLog("%s,%s", stringEle->Name(), stringEle->GetText());
 //string节点的子节点
 XMLElement *nulXmlEle = stringEle->FirstChildElement();
 if (NULL == nulXmlEle) {
  CCLog("string下面没有子点了");
 }
 //保存xml
 pDoc01->SaveFile(filePath01.c_str());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值