在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; }
到此这篇关于C++ XML库用法详解的文章就介绍到这了,更多相关c++ XML库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源链接:https://www.jb51.net/program/33846492f.htm
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容