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();
}
}

相关文章推荐

在Windows下使用TinyXML-2读取UTF-8编码包含中文字符的XML文件

本文介绍了在Windows下使用TinyXML-2读取UTF-8编码、包含中文字符XML文件的方法。...
  • henter
  • henter
  • 2017年04月17日 16:02
  • 608

C++使用tinyxml创建和解析xml文件(本文用于cocos2dx)

cocos2dx 2.2.5版里集成的tinyxml2不好用,总是baocu

Tinyxml2 实现xml文件的增删改查

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

tinyxml2解析XML文件

tinyxml2::XMLDocument xmlDoc; tinyxml2::XMLError error = xmlDoc.LoadFile(cfgFile.c_str()); if (err...

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
  • 1011

cocos2d-x3.10 使用tinyxml2在Android配合FileUtilsAndroid解析XML文件

在游戏中,每个关卡的东西往往是不同的,这就需要初始化不同的数据,然而,通常并不是把所有的关卡数据都写在程序中,而是把每个关卡数据写在配置文件中,XML既是其中的一种。   Cocos2d-x在Andr...

TinyXML读取XML文件内容 [大三四八九月实习]

1 XML文件的节点与元素 为什么要探讨这个问题呢,因为在TinyXML类的成员函数中,有指向下一个结点的成员函数(NextSibling)有指向下一个元素的成员函数(NextSiblingElem...

tinyXML读取xml文件的方法

全面的总结一下TinyXML操作XML文件的过程,TinyXML中的类与XML文件结构成一一对应关系。 Lxr 2013-09-12 1 TinyXML与XML的对应 1.1XML文件...

TinyXML读取XML文件 [大三四八九月实习]

全面的总结一下TinyXML操作XML文件的过程,TinyXML中的类与XML文件结构成一一对应关系。 Lxr 2013-09-12 1 TinyXML与XML的对应 1.1XML文件结构 ...

C++TinyXml读取解析xml文件

1. 背景 一个小工程需要在程序启动的时候,读取xml配置文件信息并进行初始化。 TinyXml是一个精简的比较流行的C++第三方库,所以工程里用它进行读取xml文件。 2. 源码及解读 解析函数如下...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Tinyxml2读取xml文件
举报原因:
原因补充:

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