- 浏览: 1450999 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。
TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。
DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。
如下是一个XML片段:
<Persons>
<Person ID="1">
<name>周星星</name>
<age>20</age>
</Person>
<Person ID="2">
<name>白晶晶</name>
<age>18</age>
</Person>
</Persons>
在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来调用。举个例子就可以说明一切。。。
对应的XML文件:
<Persons>
<Person ID="1">
<name>phinecos</name>
<age>22</age>
</Person>
</Persons>
读写XML文件的程序代码:
#include <iostream>
#include "tinyxml.h"
#include "tinystr.h"
#include <string>
#include <windows.h>
#include <atlstr.h>
using namespace std;
CString GetAppPath()
{//获取应用程序根目录
TCHAR modulePath[MAX_PATH];
GetModuleFileName(NULL, modulePath, MAX_PATH);
CString strModulePath(modulePath);
strModulePath = strModulePath.Left(strModulePath.ReverseFind(_T('\\')));
return strModulePath;
}
bool CreateXmlFile(string& szFileName)
{//创建xml文件,szFilePath为文件保存的路径,若创建成功返回true,否则false
try
{
//创建一个XML的文档对象。
TiXmlDocument *myDocument = new TiXmlDocument();
//创建一个根元素并连接。
TiXmlElement *RootElement = new TiXmlElement("Persons");
myDocument->LinkEndChild(RootElement);
//创建一个Person元素并连接。
TiXmlElement *PersonElement = new TiXmlElement("Person");
RootElement->LinkEndChild(PersonElement);
//设置Person元素的属性。
PersonElement->SetAttribute("ID", "1");
//创建name元素、age元素并连接。
TiXmlElement *NameElement = new TiXmlElement("name");
TiXmlElement *AgeElement = new TiXmlElement("age");
PersonElement->LinkEndChild(NameElement);
PersonElement->LinkEndChild(AgeElement);
//设置name元素和age元素的内容并连接。
TiXmlText *NameContent = new TiXmlText("周星星");
TiXmlText *AgeContent = new TiXmlText("22");
NameElement->LinkEndChild(NameContent);
AgeElement->LinkEndChild(AgeContent);
CString appPath = GetAppPath();
string seperator = "\\";
string fullPath = appPath.GetBuffer(0) +seperator+szFileName;
myDocument->SaveFile(fullPath.c_str());//保存到文件
}
catch (string& e)
{
return false;
}
return true;
}
bool ReadXmlFile(string& szFileName)
{//读取Xml文件,并遍历
try
{
CString appPath = GetAppPath();
string seperator = "\\";
string fullPath = appPath.GetBuffer(0) +seperator+szFileName;
//创建一个XML的文档对象。
TiXmlDocument *myDocument = new TiXmlDocument(fullPath.c_str());
myDocument->LoadFile();
//获得根元素,即Persons。
TiXmlElement *RootElement = myDocument->RootElement();
//输出根元素名称,即输出Persons。
cout << RootElement->Value() << endl;
//获得第一个Person节点。
TiXmlElement *FirstPerson = RootElement->FirstChildElement();
//获得第一个Person的name节点和age节点和ID属性。
TiXmlElement *NameElement = FirstPerson->FirstChildElement();
TiXmlElement *AgeElement = NameElement->NextSiblingElement();
TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();
//输出第一个Person的name内容,即周星星;age内容,即;ID属性,即。
cout << NameElement->FirstChild()->Value() << endl;
cout << AgeElement->FirstChild()->Value() << endl;
cout << IDAttribute->Value()<< endl;
}
catch (string& e)
{
return false;
}
return true;
}
int main()
{
string fileName = "info.xml";
CreateXmlFile(fileName);
ReadXmlFile(fileName);
}
发表评论
-
wxpython学习笔记
2011-01-13 21:21 2026出处:http://www.cnblogs.com ... -
ADO编程实用宝典
2009-05-08 13:05 1473目录 ADO编程实用宝典 目录 一引入A ... -
创建ACCESS的存储过程
2008-09-11 22:52 4796在Access自身的帮助中看到了Create Procedu ... -
实现服务器端的多线程SOCKET Server
2008-09-11 16:45 3409实现服务器端的多线程SOCKET Server 想要实现 ... -
轻量级xml读写模块 tinyXML
2008-09-11 16:32 2896文档和使用例子: http://www.grinningl ... -
基于TinyXML的XML文档操作(部分测试代码)
2008-09-11 16:31 2432#include <stdio.h> #incl ... -
用VB制作网站登陆器
2008-08-25 20:59 4093Private Sub Command1_Click() Wb ... -
vb+Webbrowser控件详解
2008-08-25 20:54 3280方法 说明 GoBack 相当 ... -
VB自动提交表单问题
2008-08-25 14:32 2472需要知道表单名称呢,比如 <Form name=&quo ... -
BBS灌水机脚本(vb scritp, telnet, bbs, sterm)
2008-08-16 11:32 2510'****************************** ... -
c++下载网页的代码,VC6.0编译通过
2008-05-30 19:21 3854#include <winsock2.h> ... -
【译】C/S 多线程Socket类
2008-05-30 19:16 1668Multi-threaded Client/Server So ... -
C++ Socket Class for Windows
2008-05-30 18:59 1630Here, I present the source c ... -
C++ socket程序
2008-05-30 17:58 11510C++ socket程序 下面是一个C++调用windows ... -
字符串提取
2008-05-05 11:24 1298Function bTest(ByVal s As Strin ... -
VB用正则表达式提取网页中的链接
2008-05-05 10:37 2901VBScript code Function getUrl ... -
利用VB提取HTML文件中的EMAIL地址
2008-05-05 09:53 1188电子邮件(EMAIL)是INTERNET上应用最广泛的一种服务 ... -
VB6.0如何使用正则表达式
2008-05-04 20:39 8006最近在用VB6解决一个网页解析的应用,涉及到了正则。如何在VB ... -
VB写一个IE插件
2008-05-04 18:20 3063Q: 就类似于3721的插件一样,当用户浏览我的网站的时候,提 ... -
破解VisualStudio2005(vs2005) 的180天限制
2008-04-19 11:53 4556中文版本的软件本身是正式版,但内置的序列号却是180天试用版的 ...
相关推荐
qDebug() << "TinyXML解析失败:" ; file.close(); return; } TiXmlElement* rootElement = xmlDoc.RootElement(); if (rootElement == nullptr) { qDebug() << "XML文件没有根元素:" ; file.close(); ...
本项目“tinyxml2解析XML文件读取数据”主要关注如何使用tinyxml2库来高效地解析XML文件并提取其中的数据。以下将详细介绍tinyxml2库的关键功能和使用方法。 1. **tinyxml2库介绍** - tinyxml2提供了DOM(Document...
TinyXML 的优点是使用起来比较简单,很容易上手,本文给出一个使用 TinyXML 进行 XML 解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成。 例如,我们可以使用 TinyXML 来解析 Students.xml 文件,该...
1. **XML解析**:TinyXML2通过`XMLDocument`类来表示整个XML文档,你可以使用`LoadFile()`或`Parse()`方法加载XML文件或内存中的XML字符串。解析完成后,文档的结构被映射为一系列的节点,包括元素(XMLElement)、...
以上就是使用TinyXML2进行XML解析和创建的基本步骤。在实际应用中,你可能需要处理错误、验证元素和属性,或者使用更复杂的查询和操作。TinyXML2库提供了丰富的API,使得这些任务变得容易。在`tinyxml2Demo`项目中,...
如果对C++11特性支持不是必需的,且更倾向于使用已有的TinyXML代码,那么TinyXML也可以满足基本需求。 在使用这些库时,记得包含相应的头文件,如`tinyxml.h`和`tinyxml2.h`,并链接相应的库。同时,由于它们都是...
总的来说, TinyXML是一个强大且实用的XML解析库,尽管它小巧,但功能齐全,足以处理大多数XML解析任务。通过深入研究源码,不仅可以学习XML解析的基本原理,还能了解如何在特定环境下优化代码,提升系统性能。
它使用文档对象模型(DOM)的方式解析XML,可解析 XML 文档,并根据该文档构建可读取、修改和保存的文档对象模型。 作为XML解析器,TinyXML-2具有以下特点: 1. 轻量级且易于集成:它体积小巧,代码简洁,易于集成...
TinyXML库设计简洁,易于使用,使得开发者能够快速地解析XML文档并从中提取数据,或者创建新的XML文档。它提供了一套API接口,允许程序员通过DOM(Document Object Model)方式来操作XML文档。DOM是一种将XML文档...
使用TinyXml解析XML的基本流程如下: 1. 创建一个`TiXmlDocument`对象,并加载XML文件。 2. 使用`LoadFile()`或`Parse()`方法解析XML内容。 3. 如果解析成功,可以通过`FirstChildElement()`、`NextSiblingElement...
TinyXML 是一个小型、开源的 C++ 库,专门用于解析和生成 XML(eXtensible Markup Language)文档。在本文中,我们将深入探讨如何使用 TinyXML 来读写 XML 文件,以及它在 Visual C++ 开发环境中的应用。 1. **Tiny...
下面我们将详细讨论如何使用TinyXML2来解析XML配置文件。 一、TinyXML2的基本结构与概念 XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输数据。TinyXML2则提供了一个C++接口来处理XML文档。在...
使用tinyXML解析XML - **加载XML文档**: 通过`TiXmlDocument`类的`LoadFile()`函数,可以将XML文件加载到内存中,例如: ```cpp TiXmlDocument doc("example.xml"); if (!doc.LoadFile()) { // 处理加载失败 } ``...
TinyXML库的使用,可以让你在C++程序中方便地解析XML文档的结构,提取其中的数据,甚至修改和创建新的XML文档。 TinyXML库的主要组成部分包括以下几个类: 1. **TiXmlDocument**: 这是处理整个XML文档的类。你可以...
1. **TiXMLDocument**: 这是TinyXML的核心类,代表一个XML文档。你可以通过这个类加载XML文件,或者创建一个新的XML结构并保存为文件。 2. **TiXmlElement**: 表示XML文档中的元素节点。元素是XML文档的主要构建块...
`tinyxml2.h`是头文件,包含了TinyXML-2的所有公共接口和类定义。在这个文件中,你可以找到如下的关键知识点: 1. **XMLDocument**: 这是TinyXML-2的核心类,代表一个XML文档。你可以使用它来加载XML文件、创建新的...
总之,“TinyXML2使用示例”提供了学习和实践XML解析的实例,通过分析`test_tinyxml2.cpp`的代码,我们可以深入理解TinyXML2库的工作原理,并学会如何在实际项目中应用XML配置文件。同时,对于`CXMLCfg`类的设计和...
TinyXML是个解析库,主要由DOM模型类(TiXmlBase、TiXmlNode、TiXmlAttribute、TiXmlComment、TiXmlDeclaration、TiXmlElement、TiXmlText、TiXmlUnknown)和操作类(TiXmlHandler)构成。它由两个头文件(.h文件)...
使用TinyXML解析XML: 以下是一般步骤: 1. 引入库:首先,在项目中包含TinyXML的头文件,例如`tinyxml.h`。 2. 加载XML文档:使用`TiXmlDocument`类加载XML文件到内存,例如`TiXmlDocument doc("example.xml");`。 ...
Tinyxml 是一个开源的、轻量级的XML解析库,主要设计用于C++语言环境,包括iOS平台。在iOS开发中,XML(eXtensible Markup Language)是一种常见的数据交换格式,广泛应用于网络服务和配置文件。Tinyxml库提供了一个...