tinyXml解析XML文件

tinyXml解析XML文件TinyXML解析一个XML文档,并从该文档构建可读取、修改和保存的文档对象模型(DOM)。XML代表“可扩展标记语言”,它允许您创建您自己的文档标记。HTML在标记方面做得很好用于浏览器的文档,XML允许您定义任何类型的文档标记,例如描述组织者应用程序。XML是一种非常结构化和方便的格式。所有为存储应用程序数据而创建的随机文件格式都可以全部替换为XML。所有内…

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

        TinyXML解析一个XML文档,并从该文档构建可读取、修改和保存的文档对象模型(DOM)。

        XML代表“可扩展标记语言”,它允许您创建您自己的文档标记。HTML在标记方面做得很好用于浏览器的文档,XML允许您定义任何类型的文档标记,例如描述组织者应用程序。XML是一种非常结构化和方便的格式。所有为存储应用程序数据而创建的随机文件格式都可以全部替换为XML。所有内容都有一个解析器。

        TinyXML设计为易于学习和快速学习。是两个.h和四个cpp文件。只需将这些添加到您的项目中就可以了。有一个示例文件xmltest.cpp可以让您开始。TinyXML是根据zlib许可证发布的,所以您可以在开放源码或商业代码中使用它。细节许可证在每个源文件的顶部。TinyXML试图成为一个灵活的解析器,但真正正确和兼容的XML输出。TinyXML应该编译任何合理的C++合规系统。它不依赖于异常或RTTI。它可以是使用或不使用STL支持编译。TinyXML完全支持UTF-8编码和前64K字符实体。

       TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。

TinyXml中的各个基本类型之间的关系,看看这个继承图:

tinyXml解析XML文件

       TinyXML的结构及节点说明:

      DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。

 在TinyXML中,根据XML的各种元素来定义了一些类:

TiXmlBase:整个TinyXML模型的基类。

TiXmlAttribute:对应于XML中的元素的属性。

TiXmlNode:对应于DOM结构中的节点。

TiXmlComment:对应于XML中的注释

TiXmlDeclaration:对应于XML中的申明部分,即<?versiong=”1.0″ ?>。

TiXmlDocument:对应于XML的整个文档。

TiXmlElement:对应于XML的元素。

TiXmlText:对应于XML的文字部分

TiXmlUnknown:对应于XML的未知部分。 

TiXmlHandler:定义了针对XML的一些操作。

TinyXML是个解析库,主要由DOM模型类(TiXmlBase、TiXmlNode、TiXmlAttribute、TiXmlComment、TiXmlDeclaration、TiXmlElement、TiXmlText、TiXmlUnknown)和操作类(TiXmlHandler)构成。它由两个头文件(.h文件)和四个CPP文件(.cpp文件)构成,用的时候,只要将(tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp)导入工程就可以用它的东西了。如果需要,可以将它做成自己的DLL来调用。

https://www.cnblogs.com/whlook/p/7117306.html

被解析的文件为test.xml,文件内容如下:

<?xml version="1.0" encoding="GBK" ?>
<root>
    <host checked="true" station="1001">AAA</host>
    <client>
        <name>xiaoming</name>
        <id>200801</id>
    </client>
</root>

解析该文件的C++程序如下:

#include <stdio.h>
#include "../tinyxml/tinyxml.h"

int main()
{
	// 解析xml
	TiXmlDocument xml_doc;
	if(!xml_doc.LoadFile("test.xml"))
	{
		return -1;
	}
	

	// 根节点
	TiXmlElement* xml_root = xml_doc.RootElement();
	if (NULL == xml_root)
	{
		return -1;
	}

	// 获取元素的文本与属性
	if(0)
	{
		TiXmlElement* xml_host = xml_root->FirstChildElement("host");
		const char* text = xml_host->GetText();
		const char* aChecked = xml_host->Attribute("checked");
		const char* aStation = xml_host->Attribute("station");
		printf("text:%s, check:%s, station:%s\n", text, aChecked, aStation);
	}

	//
	if(1)
	{
		TiXmlElement* xml_client = xml_root->FirstChildElement("client");

		TiXmlElement* xml_clientId = xml_client->FirstChildElement("id");
		TiXmlElement* xml_clientName = xml_client->FirstChildElement("name");

		const char* text_name = xml_clientName->GetText();
		printf("name = %s\n", text_name);

		// ...取得id和name的文本 ...
	}

	
	return 0;
}

解析复杂XML例子:

https://blog.csdn.net/wcy6340/article/details/9670201

 

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

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

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


相关推荐

  • Antd的table筛选,表头columns的filters过滤清空

    Antd的table筛选,表头columns的filters过滤清空Form+Table实现了自定义筛选菜单的功能。具体可以参考https://ant.design/components/table-cn/#components-table-demo-custom-filter-panel。但是此功能会有bug:选择相应的搜索条件后,点击“搜索”按钮,Table会渲染相应的数据,且Table表头也有自带的过滤功能(实际上是column的filters属性起的作用);然后再点击“清除”按钮,所有的搜索条件和表头里filters过滤的条件都要被清除。但是Ta.

    2022年5月21日
    45
  • 如何删除LDSGameMaster「建议收藏」

    如何删除LDSGameMaster「建议收藏」如何删除LDSGameMaster背景介绍方法一方法二背景介绍最近不小心下载安装了鲁大师,卸载之后,C盘中仍有一个名为LDSGameMaster的文件夹。虽然很小,之后18M,但是一定要删除掉,否则心里很不舒服。方法一百度告诉我,解决这个问题很简单。这个文件夹中有个uninstall,运行之后就没有了。但我没有发现我的文件夹中有这么一个东西。这个方法不提。方法二删除之后,提示:操作无法…

    2022年6月13日
    31
  • java目录删除_java删除文件及目录[通俗易懂]

    java目录删除_java删除文件及目录[通俗易懂]java中删除目录事先要删除目录下的文件或子目录。用递归就可以实现。publicvoiddel(Stringfilepath)throwsIOException{Filef=newFile(filepath);//定义文件路径if(f.exists()&&f.isDirectory()){//判断是文件还是目录if(f.listFiles().length==…

    2022年6月5日
    33
  • django笔记_django 异步

    django笔记_django 异步前言Django是一个开放源代码的Web应用框架,由Python写成,最初用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站,即CMS(内容管理系统)软件,于2005年7月在BSD许可证下发布,这

    2022年7月30日
    3
  • PyCharm 2021.5.3 x64激活码永久【在线注册码/序列号/破解码】

    PyCharm 2021.5.3 x64激活码永久【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    69
  • T10接口_服务端接口和前端接口

    T10接口_服务端接口和前端接口本文适用鼎捷软件T100系列1.azzi700注册接口程序号,接口服务名2.设计器code进行签出,下载(空框架)3.设计数据接收的结构,以及开发函数进行数据处理4.程序上传,无提示则表示成功5.打开http://erp_ip/wstopprd/ws/r/awsp920,如果接口地址返回isok则接口是通过的,还可以使用工具postman或者soapui进行调用测试6.检查日志,T100的接口日志存放于$TEMPDIR或者$TEMPLOG,日志的命名规则是按天的,每天调用的所

    2022年10月20日
    0

发表回复

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

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