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


相关推荐

  • vscode配置java环境最新_VScode中文

    vscode配置java环境最新_VScode中文VScode配置Java环境1.VisualStudioCode介绍VisualStudioCode(简称“VSCode”)是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于MacOSX、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可在桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如

    2022年10月4日
  • 你的账户被停用,请向系统管理员咨询_win10退出管理员账户

    你的账户被停用,请向系统管理员咨询_win10退出管理员账户当你的电脑误操作了以下步骤,或者被篡改了设置了这里那恭喜你,重启后就登不上Administrator账户了首先看一下网上的两种无效方式无效方式一:带命令符的安全模式一般两种方式进入安全模式:方式一:F8进入方式二:按住shift重启cmd中输入netuseradministrator/active:yes亲测无效,依然登录不进去无效方式二:PE进入设置用户和组…

    2022年10月26日
  • quotient函数_Mid函数

    quotient函数_Mid函数QuotedStr()转载于:https://www.cnblogs.com/ljjphysics/archive/2011/04/25/2028670.html

    2022年10月18日
  • Debug.WriteLine输出调试信息[通俗易懂]

    Debug.WriteLine输出调试信息转载于:https://www.cnblogs.com/xuyuchen/p/8283023.html

    2022年4月10日
  • 期货软件开发与平台搭建注意事项是什么_手机期货程序化交易软件

    期货软件开发与平台搭建注意事项是什么_手机期货程序化交易软件期货软件开发和期货平台搭建需要注意很多内容,关系到后期运营的是否正常稳定。现在市面上的很多的期货交易系统软件平台,基本都支持支持PC、安卓APP端,微信端、且具备风控系统、杠杆系统、交易系统、在线出入金、后台管理系统、代理系统、股票数据行情等功能。但是行业鱼龙混杂,并不是每一家开发公司都是靠谱的。加wx:“Zhangyoukeji001”发送相关演示版与报价!  作为投资者,要想拥有一个可靠的期货交易系统,需要注意以下几点:前期对期货系统软件的功能规划——针对期货系统软件,要有具体的规划方案,需

    2022年9月10日
  • 深度学习: RPN (区域候选网络)

    深度学习: RPN (区域候选网络)Overview绿框内为RPN所在的位置:放大之后是这样:庖丁解牛RPN由以下三部分构成:在RPN头部,通过以下结构生成anchor(其实就是一堆有编号有坐标的bbox):论文中的这幅插图对应的就是RPN头部:(曾经以为这张图就是整个RPN,于是百思不得其解,走了不少弯路。。。)在RPN中部,分类分支(cls)和边框回归分支(b…

    2022年6月23日

发表回复

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

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