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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 自动化运维平台搭建(一)「建议收藏」

    自动化运维平台搭建(一)「建议收藏」自动化运维平台搭建(一)。喜欢的就赞我吧,这样我才有动力继续分享额,带你建立一个强大的自动运维平台

    2022年5月16日
    43
  • win10锁定计算机命令,锁定Windows 10 PC的10种方法

    win10锁定计算机命令,锁定Windows 10 PC的10种方法离开时,锁定Windows10PC是保护计算机安全的最佳方法。这不会退出或中断任何正在运行的应用程序,您必须输入PIN或密码才能通过锁定屏幕。您可以通过以下10种方式锁定计算机。在“开始”菜单中锁定计算机毫不奇怪,“开始”菜单提供了用于锁定PC的选项。只需单击“开始”按钮(Windows图标),选择您的帐户名,然后单击“锁定”。使用Windows键几乎每台WindowsPC的键盘上都有Win…

    2022年7月21日
    9
  • 示波器中的trigger是什么意思_示波器中扫描和同步的作用是什么

    示波器中的trigger是什么意思_示波器中扫描和同步的作用是什么什么是Trigger,它在示波器中的作用是什么?先来看看别人是怎么说的。Thetriggereventestablishesthetime-referencepointinthewaveformrecord.Allwaveformrecorddataislocatedintimewithrespecttothatpoint.Theinstru…

    2022年10月11日
    0
  • pycharm-professional-2021.12.13激活【2021.10最新】

    (pycharm-professional-2021.12.13激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html23EQQJJI0G-eyJsaWN…

    2022年3月30日
    52
  • sp_executesql 与 参数

    sp_executesql 与 参数总结了一下 sp_executesql 与 参数 的关系 sp_executesql  并不能通过参数列表指定任意部分,在普通sql语句中是变量的可以指定,是常量的不能指定。在sp_executesql 执行的字符串中, 下面称为spStr,有些是在设置sql字符串前就必须指定的,有些是以变量的形式指定的。跟sql语句相一致,这里语句称为 sqlStr,凡是在sqlStr语句中必须要声明为常

    2022年5月21日
    30
  • the section of the README devoted to missing data problems[通俗易懂]

    the section of the README devoted to missing data problems[通俗易懂]the section of the README devoted to missing data problems

    2022年4月24日
    46

发表回复

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

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