欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > c++ XML库用法

c++ XML库用法

2025/3/24 21:52:56 来源:https://blog.csdn.net/qq_27726651/article/details/146424087  浏览:    关键词:c++ XML库用法

在C++中,处理XML文件的读写操作可以通过多种库来实现。以下是几个常用且简洁的库:

1. ​TinyXML-2

  • 简介: TinyXML-2 是一个轻量级的C++ XML解析库,易于使用且性能良好。
  • 特点:
    • 简单易用,API直观。
    • 内存占用小,适合嵌入式系统。
    • 支持XML文件的读取和写入。
  • 安装: 只需包含头文件和源文件即可。

TinyXML-2 和 ​pugixml 是最常用的XML处理库,适合大多数场景。

#include "xml_lib/tinyxml2.h"
#include <iostream>using namespace tinyxml2;int main() {// 创建 XML 文档对象XMLDocument doc;// 读取 XML 文件if (doc.LoadFile("demo.xml") != XML_SUCCESS) {std::cerr << "Failed to load XML file!" << std::endl;return 1;}// 获取根节点XMLElement* root = doc.FirstChildElement("RegisterDescription");if (!root) {std::cerr << "No root element found!" << std::endl;return 1;}// 读取子节点内容// XMLElement* element = root->FirstChildElement("Name=public_system_status");// if (element) {//     XMLElement* element2 = element->FirstChildElement("DisplayName");//     std::cout << "Element2 text: " << element2->GetText() << std::endl;// }/* 遍历节点信息 */for (XMLElement* child = root->FirstChildElement(); child != nullptr; child = child->NextSiblingElement()) {// 检查节点名称是否为 "Integer"if (strcmp(child->Name(), "Integer") == 0) {// 检查属性 "Name" 和 "NameSpace" 是否符合条件const char* name = child->Attribute("Name");const char* nameSpace = child->Attribute("NameSpace");if (name && nameSpace && strcmp(name, "public_reserved_0x0008") == 0 && strcmp(nameSpace, "Custom") == 0) {// 找到目标节点//std::cout << "Found target node: " << child->Name() << std::endl;std::cout << "Found target node: " << child->FirstChildElement("pValue")->GetText() << std::endl;// 获取节点的文本内容(如果有)const char* text = child->GetText();if (text) {std::cout << "Node text: " << text << std::endl;}// 可以在这里处理目标节点break; // 找到后退出循环}}}// 修改或添加新节点XMLElement* newElement = doc.NewElement("newElement");newElement->SetText("LiuMing");root->InsertEndChild(newElement);// 保存修改后的 XML 文件if (doc.SaveFile("gigevdevice.xml") != XML_SUCCESS) {std::cerr << "Failed to save XML file!" << std::endl;return 1;}std::cout << "XML file updated successfully!" << std::endl;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词