支持asp的免费空间 适合钓鱼网站电商网站的支付模块怎么做
web/
2025/9/26 17:49:39/
文章来源:
支持asp的免费空间 适合钓鱼网站,电商网站的支付模块怎么做,网站整体风格设计,张家港江阴网站设计XML语法规则介绍及总结-CSDN博客 TinyXML-2 是一个简单轻量级的 C XML 解析库,它提供了一种快速、高效地解析 XML 文档的方式。
1. 下载地址 Gitee 极速下载/tinyxml2 2. 基本用法
下面将详细介绍 TinyXML-2 的主要使用方法:
2.1. 引入头文件和命名空间
#i…XML语法规则介绍及总结-CSDN博客 TinyXML-2 是一个简单轻量级的 C XML 解析库,它提供了一种快速、高效地解析 XML 文档的方式。
1. 下载地址 Gitee 极速下载/tinyxml2 2. 基本用法
下面将详细介绍 TinyXML-2 的主要使用方法:
2.1. 引入头文件和命名空间
#include tinyxml2.h
using namespace tinyxml2;
2.2. 解析 XML 文档
XMLDocument doc;
doc.LoadFile(example.xml);
if (doc.ErrorID() ! XML_SUCCESS) {// 处理错误return;
}
2.3. 访问根节点
XMLElement* root doc.RootElement();
2.4. 遍历子节点
for (XMLElement* elem root-FirstChildElement(); elem; elem elem-NextSiblingElement()) {// 处理节点
}
2.5. 读取节点属性
const char* attr elem-Attribute(name);
if (attr) {// 处理属性值
}
2. 6. 读取节点文本内容
const char* text elem-GetText();
if (text) {// 处理文本内容
}
2.7. 除了遍历和读取节点,TinyXML-2 还提供了丰富的节点操作 API,包括创建、插入、删除、克隆节点等。
// 创建新节点并插入到现有节点下
XMLElement* newElem doc.NewElement(new_element);
root-InsertEndChild(newElem);// 删除节点
root-DeleteChild(newElem);// 克隆节点
XMLElement* clonedElem newElem-DeepClone(doc);
root-InsertEndChild(clonedElem);
2.8. 创建新节点并添加到文档
XMLElement* newElem doc.NewElement(new_element);
newElem-SetAttribute(attribute, value);
newElem-SetText(New element text);
root-InsertEndChild(newElem);
2.9. 文档操作
TinyXML-2 不仅可以解析现有的 XML 文档,还可以创建新的 XML 文档,并进行保存和打印操作。
// 创建新文档
XMLDocument doc;
XMLDeclaration* decl doc.NewDeclaration();
doc.InsertFirstChild(decl);
XMLElement* root doc.NewElement(root);
doc.InsertEndChild(root);// 保存文档
doc.SaveFile(new_document.xml);// 打印文档
doc.Print(); 2.10. 保存 XML 文档
doc.SaveFile(new_example.xml);
2.11. 错误处理 TinyXML-2 提供了丰富的错误处理机制。您可以通过检查 doc.ErrorID() 和 doc.ErrorName() 来获取错误编号和错误信息。
if (doc.ErrorID() ! XML_SUCCESS) {printf(Error loading file: %s\n, doc.ErrorName());return;
}
2.12.内存管理 TinyXML-2 使用自己的内存管理机制,无需手动分配和释放内存。所有的内存分配和释放都由库内部完成。
3. 代码示例
生成一个xml,用于保存照片路径GPS信息及缺陷信息等。
#include tinyxml2.h
#include string
using namespace tinyxml2;int SaveInfo(std::string xmlFile, std::string imagePath, std::string *calssName, int calssNameNum, double lon, double lat, double alt)
{XMLDocument* doc new XMLDocument();if(doc NULL){ printf(New xml is NULL!\n);return -1;}if(xmlFile.empty()) {printf(xmlFile path is NULL!\n);return -1;}// 创建xmlconst char* declaration ?xml version\1.0\ encoding\UTF-8\ standalone\no\?;doc-Parse(declaration);//会覆盖xml所有内容//创建根目录XMLElement* root doc-NewElement(Result);doc-InsertEndChild(root);//路径XMLElement* imagePathNode doc-NewElement(imagePath);imagePathNode-InsertEndChild(doc-NewText(imagePath.c_str()));root-InsertEndChild(imagePathNode);//缺陷类别XMLElement* classTypeNode doc-NewElement(classType);for(int i 0; i calssNameNum; i){XMLElement* classNameNode doc-NewElement(className);XMLText* classNameTextdoc-NewText(calssName[i].c_str()); classNameNode-InsertEndChild(classNameText);classTypeNode-InsertEndChild(classNameNode);}root-InsertEndChild(classTypeNode);//经度XMLElement* gpsNode doc-NewElement(gps);XMLElement* longitudeNode doc-NewElement(longitude);XMLText* lonTextdoc-NewText(std::to_string(lon).c_str()); longitudeNode-InsertEndChild(lonText);//纬度XMLElement* latitudeNode doc-NewElement(latitude);XMLText* latTextdoc-NewText(std::to_string(lat).c_str()); latitudeNode-InsertEndChild(latText);//高度XMLElement* altitudeNode doc-NewElement(altitude);XMLText* altTextdoc-NewText(std::to_string(alt).c_str());altitudeNode-InsertEndChild(altText);gpsNode-InsertEndChild(longitudeNode);gpsNode-InsertEndChild(latitudeNode);gpsNode-InsertEndChild(altitudeNode);root-InsertEndChild(gpsNode);if(XML_SUCCESS ! doc-SaveFile((char *)xmlFile.c_str())){printf(ERROR: Save xml:%s fail\n, xmlFile.c_str());doc-PrintError();return -1;}printf(Save xmlFile success!\n);return 0;
}
运行结果 4. 总结 TinyXML-2 是一个功能强大、易用的 XML 解析库,适合各种 C 项目使用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82308.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!