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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • opc服务器配置PLC信号,plc配置OPC服务器

    opc服务器配置PLC信号,plc配置OPC服务器plc配置OPC服务器内容精选换一换云耀云服务器(HyperElasticCloudServer,HECS)是可以快速搭建简单应用的新一代云服务器,具备独立、完整的操作系统和网络功能。提供快速应用部署和简易的管理能力,适用于网站搭建、开发环境等低负载应用场景。具有高性价比、易开通、易搭建、易管理的特点。云耀云服务器与弹性云服务器的主要区别:云耀云服务器:云耀云服务器是精简视图提供了云服务器…

    2022年6月20日
    25
  • JVM架构和GC垃圾回收机制(JVM面试不用愁)[通俗易懂]

    JVM架构和GC垃圾回收机制(JVM面试不用愁)[通俗易懂]JVM架构和GC垃圾回收机制详解JVM架构图分析下图:参考网络+书籍,如有侵权请见谅(想了解Hadoop内存溢出请看:Hadoop内存溢出(OOM)分类、参数调优化)JVM被分为三个主要的子系统(1)类加载器子系统(2)运行时数据区(3)执行引擎1.类加载器子系统Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链…

    2022年4月28日
    57
  • 增强版在线LEFSe分析和可视化鉴定标志性基因或物种

    增强版在线LEFSe分析和可视化鉴定标志性基因或物种LEfSe分析即LDAEffectSize分析,是一种用于发现和解释高维度数据生物标识(基因、通路和分类单元等)的分析工具,可以进行两个或多个分组的比较,它强调统计意义和生物相关性,…

    2022年6月10日
    50
  • vb 学习的几个网站链接

    vb 学习的几个网站链接
    1.w3c:http://www.w3schools.com/vbScript/default.asp
    2.vb用户手册 http://www.cheapbuy.cn/tools/vbs/vskeyNothing.htm
    3.vb程序员指南源码下载地址,http://www.wrox.com/WileyCDA/Section/id-WROX_SEARCH_RESULT.html?query=vbscript
    找到vb第三版,然后下载源码
    4.xml

    2022年6月21日
    39
  • Spring batch教程 之 spring batch简介

    Spring batch教程 之 spring batch简介SpringBatch介绍在企业领域,有很多应用和系统需要在生产环境中使用批处理来执行大量的业务操作.批处理业务需要自动地对海量数据信息进行各种复杂的业务逻辑处理,同时具备极高的效率,不需要人工干预.执行这种操作通常根据时间事件(如月末统计,通知或信件),或者定期处理那些业务规则超级复杂,数据量非常庞大的业务,(如保险赔款确定,利率调整),也可能是从内部/外部系统抓取到的各种数据,通常需要

    2022年5月11日
    47
  • Java面试之数据结构& 算法& 计算机基础

    Java面试之数据结构& 算法& 计算机基础Java面试之数据结构& 算法& 计算机基础

    2022年4月22日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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