C++解析XML文件[通俗易懂]

C++解析XML文件[通俗易懂]C++解析XML文件TinyXML安装下载解析XML文件最近在使用C++处理GF-3和RADARSAT-2雷达影像,需要通过解析XML文件获取影像时间,我选用了TinyXML库来解析。参考了网上的一些教程,这个文档个人觉得是解释的很清晰的。(https://www.cnblogs.com/hgwang/p/5833638.html),第一次使用记录一下学习过程,供以后参考。TinyXML安装下…

大家好,又见面了,我是你们的朋友全栈君。

最近在使用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;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159155.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 轻松搞懂Word2vec / FastText+BiLSTM、TextCNN、CNN+BiLSTM、BiLSTM+Attention实现中英文情感分类

    轻松搞懂Word2vec / FastText+BiLSTM、TextCNN、CNN+BiLSTM、BiLSTM+Attention实现中英文情感分类前言讲道理,这篇博客应该可以帮助很多只有一点点NLP的朋友,在较短的时间内了解文本分类的整个过程并用代码复现整个流程。事先说明,这里大家先不要过分要求自己去理解整个模型的原理,先搞清楚整个实现流程,体验一下敲代码并成功应用的快感。实现流程找数据集首先第一步,就是要找好数据集,没有数据集模型怎么学习,怎么涨知识。那这里呢,我们采用的情感数据集是weibo_senti_100k数据集,一共有119988条带情感标注的新浪微博评论,其中正负向评论均为59994条,非常平衡的一个数据集。其中lab.

  • MySQL配置+SQLyog安装教程

    MySQL配置+SQLyog安装教程一标题、MySQL的配置官网地址:MySQL官网地址。我选择的版本是5.5.27,具体mis文件运行之后的操作步骤参考博客MySQL安装教程。二、SQLyog安装教程安装程序下载:链接:https://pan.baidu.com/s/1MeFavdcOAd0BUG3D9cA9eg提取码:i5mi安装教程参考博客SQLyog安装教程三、所需数据库资源百度云链接:链接:https…

  • 帝国cms“建立目录不成功,请检查目录权限”的解决方法

    帝国cms“建立目录不成功,请检查目录权限”的解决方法

    2021年11月17日
  • Pycharm全局搜索快捷键失效「建议收藏」

    Pycharm全局搜索快捷键失效「建议收藏」问题很久没用pycharm的全局收缩快捷键。今天一用,发现用不了。后面才发现是与win10自带的输入法的繁简体切换快捷键冲突了。解决

  • SCCM配置PXE启动

    SCCM配置PXE启动最近一直在研究学习SCCM,发现目前在网上没有一篇完整的SCCM配置PXE启动来部署操作系统的详细文档,自己在学习的过程中也遇到了不少问题。因此就将遇到的问题和详细的配置过程,给大家分享一下。首先介绍下我的环境。为了方便配置在实验环境中我将DC(域控制器),DHCP,WDS,和SCCM安装在一台机器上。在安装完SCCM2007R2和初始的配置…

  • Iredmail批量导入用户名和密码脚本

    Iredmail批量导入用户名和密码脚本

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号