Tinyxml2读取xml文件

原创 2015年07月09日 09:01:21

XML文件内容

<?xml version="1.0" encoding="UTF-8"?>
<table>
    <person>
        <profession>teacher</profession>
        <name>Tom</name>
        <age>28</age>
        <height>1.7</height>
    </person>
    <person>
        <profession>student</profession>
        <name>Jerry</name>
        <age>18</age>
        <height>1.8</height>
    </person>
    <person>
        <profession>police</profession>
        <name>Jack</name>
        <age>38</age>
        <height>1.6</height>
    </person>
</table>

具体代码

CString GetAppPath()
{
//获取应用程序根目录
TCHAR modulePath[MAX_PATH];
GetModuleFileName(NULL, modulePath, MAX_PATH);
CString strModulePath(modulePath);
strModulePath = strModulePath.Left(strModulePath.ReverseFind(_T('\\')));
return strModulePath;
}


int main()
{
//获取xml文件路径
CString fileName("\\test.xml");
CString Path = GetAppPath();
Path += fileName;

//CString转换为const char*
const size_t strsize = (Path.GetLength() + 1) * 2; // 宽字符的长度;
char * pstr = new char[strsize]; //分配空间;
size_t sz = 0;
wcstombs_s(&sz, pstr, strsize, Path, _TRUNCATE);
const char* FilePath = pstr;//xml文件绝对路径

//创建一个xml文档对象
tinyxml2::XMLDocument *myDocument = new tinyxml2::XMLDocument();
myDocument->LoadFile(FilePath);

//读取根节点
XMLElement *RootElement = myDocument->FirstChildElement();
cout << RootElement->Value() << endl;

//循环输出每一个Person属性
XMLElement *FirstPerson = RootElement->FirstChildElement();//获取第一个Person节点
while (FirstPerson)
{
XMLElement *PersonType = FirstPerson->FirstChildElement();
cout << "职业:" << PersonType->GetText() << " ";
XMLElement *PersonName = PersonType->NextSiblingElement();
cout << "姓名:" << PersonName->GetText() << " ";
XMLElement *PersonAge = PersonName->NextSiblingElement();
cout << "年龄:" << PersonAge->GetText() << " ";
XMLElement *PersonHeight = PersonAge->NextSiblingElement();
cout << "身高:" << PersonHeight->GetText() << endl;
FirstPerson = FirstPerson->NextSiblingElement();
}
}

利用tinyxml2读取xml文件

读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。       TinyXML...
  • hczhiyue
  • hczhiyue
  • 2014年02月21日 21:30
  • 1877

tinyxml2读写XML文件的例程

例程很简单,因此就不再啰嗦了,直接上代码。 test.xml内容: 0 10 10 0 0 -1 0 1 0 90 0 10 -10 10 ...
  • zhawk
  • zhawk
  • 2017年03月08日 19:43
  • 1372

TinyXML2读取和创建XML文件

TinyXML2是simple、small、efficient C++ XML文件解析库!方便易于使用,是对TinyXML的升级改写!源码见本人上传到CSDN的TinyXML2.rar资源,或者到官网...
  • K346K346
  • K346K346
  • 2015年03月14日 13:29
  • 4879

TinyXML2 读取

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

Tinyxml2 实现xml文件的增删改查

初识tinyxml2,记录一下其常 用操作。 参考网址:https://shilohjames.wordpress.com/2014/04/27/tinyxml2-tutorial/#XML-Sav...
  • xianxjm
  • xianxjm
  • 2017年06月19日 10:16
  • 990

使用tinyXML2 读写配置文件

1. 前言我们上次写了一段用来提取图片中交点信息的程序: http://blog.csdn.net/zhyh1435589631/article/details/53084795 但是, 我们发现代...
  • zhyh1435589631
  • zhyh1435589631
  • 2017年01月09日 22:29
  • 1037

c++读取xml

我们用 TinyXML2 库来解析操作xml 下载网址:http://grinninglizard.com/tinyxml2docs/index.html 这个库很简单,首先我们从github上把...
  • zky1347888
  • zky1347888
  • 2015年02月01日 23:23
  • 2550

VS2010中使用TinyXML

1:什么是XML xml是可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 ...
  • jamy08
  • jamy08
  • 2014年05月28日 16:55
  • 1357

tinyxml读取中文时显示乱码的解决方法

1、tinyxml解析器是一个很好用的,乱码是由于GB2312与UTF8之间转换不当造成的,tinyxml在处理UTF8本身没有问题。 2、网上很多人提供的方法是进行GB2312与UTF8之间的转换 ...
  • xiaoxiaoyusheng2012
  • xiaoxiaoyusheng2012
  • 2015年04月27日 21:32
  • 4511

tinyXML读取xml文件的方法

全面的总结一下TinyXML操作XML文件的过程,TinyXML中的类与XML文件结构成一一对应关系。 Lxr 2013-09-12 1 TinyXML与XML的对应 1.1XML文件...
  • CodeHeng
  • CodeHeng
  • 2015年02月03日 10:35
  • 1889
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Tinyxml2读取xml文件
举报原因:
原因补充:

(最多只允许输入30个字)