C++解析XML文件[通俗易懂]
2023-06-13 09:12:41 时间
大家好,又见面了,我是你们的朋友全栈君。
C++解析XML文件
最近在使用C++处理GF-3和RADARSAT-2雷达影像,需要通过解析XML文件获取影像时间,我选用了 TinyXML库来解析。参考了网上的一些教程,这个文档个人觉得是解释的很清晰的。(https://www.cnblogs.com/hgwang/p/5833638.html),第一次使用记录一下学习过程,供以后参考。
TinyXML安装下载
进入官网下载,解压缩,将其中的tinystr.h、tinystr.cpp、tinyxml.h、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp 6个文件放在你的项目目录下,就是你自己写的.h和.cpp文件所在的目录。
解析XML文件
先看一下XML文件内容。下面这个是RADARSAT-2影像的product.xml文件
在XML文档中,每个<></>标签都是一个节点或元素。解析时需要逐层搜索(好像是不能全文检索),直到找到我们要的那个标签。同一层中,可以根据元素名使用IterateChildren方法来查找匹配的节点。
我的需求是获取rawDataStartTime节点中的时间。直接上代码。
#include"tinyxml.h"
#include"tinystr.h"
TiXmlDocument doc;
//加载文档
if (!doc.LoadFile(xml_file))
{
std::cerr << doc.ErrorDesc() << std::endl;
exit(1);
}
//获取根节点,也是xml文档的声明部分
TiXmlElement* root = doc.FirstChildElement();
if (root == NULL)
{
std::cerr << "Failed to load file: No root element." << std::endl;
doc.Clear();
exit(1);
}
std::string xml_time;
TiXmlNode *source_node = NULL;
//查找sourceAttributes节点
source_node = root->IterateChildren("sourceAttributes", source_node);
TiXmlElement *source_elem = NULL;
source_elem = source_node->ToElement();
TiXmlNode *rawdata_node = NULL;
//查找rawDataStarTime节点
rawdata_node = source_elem->IterateChildren("rawDataStartTime", rawdata_node);
//获取该节点的文本信息。
xml_time = rawdata_node->ToElement()->GetText();
return xml_time;
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159155.html原文链接:https://javaforall.cn
相关文章
- C++文件读写操作分析文本文件与二进制文件
- C++读写txt文件(基本操作1)
- C++的this指针
- c++语言截取字符串,详解C++ string常用截取字符串方法
- DirectX修复工具使用技巧之一——解除被占用的文件,完整修复C++
- C++ 使用LockWorkStation()的过程遇到的问题[通俗易懂]
- 10min快速回顾C++语法(四)
- c++ auto类型_auto C++
- C/C++ 文件与指针操作笔记
- C/C++ Qt MdiArea 多窗体组件应用
- 使用 c++20 协程与 io_uring 实现高性能 web 服务器 part1:一个最简单的 echo server
- 【C++】STL 模拟实现之 vector
- 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
- C++ winhttp 实现文件下载器
- Linux下简单有效的XML文件解析方法(linux解析xml文件)
- C++文件读写详解(ofstream,ifstream,fstream)编程语言
- C++ partial_sum(STL partial_sum)部分和计算方法详解
- C++学生信息管理系统演示和说明(文件版)
- C++学生信息管理系统(文件版)源码下载、源码解析和设计思路
- 轻松学习:Linux如何修改XML文件(linux修改xml)
- XML文件配置Redis环境指南(xml文件配置redis)
- c++STL容器总结之:vertor与list的应用
- 浅析c++宏#val在unicode下的使用
- c++中的string常用函数用法总结
- C++多文件变量解析
- c#正反序列化XML文件示例(xml序列化)
- VC++在TXT文件指定位置追加内容的方法
- C++遗传算法类文件实例分析
- C++指向函数的指针用法详解