Win10系列:VC++ XML文件解析

XML文件按照元素标记来存储数据,通过遍历这些元素标记可以得到XML文件中所保存的数据。在C++/CX的类库中并未定义用于解析XML文件的类,但C++提供了能解析XML文件的框架和类库,如msxml4、libxml、IXMLDOM和TinyXML等,在使用C++/CX编写应用程序时可以通过C++提供的框架和类库来解析XML文件。TinyXML是一个轻量级解析XML的框架,本节将介绍如何使用此框架来解析一个XML文件。

TinyXML框架包含了以下的类和函数,通过使用这些类和函数可以方便地读取一个XML文件中的数据。

  • TiXmlDocument类,表示整个XML文件的文档类。
  • TiXmlDeclaration类,表示XML文件的声明部分的声明类。
  • TiXmlElement类,表示XML中的节点元素的元素类。
  • RootElement函数,用于得到XML文件中的根节点。
  • FirstChildElement函数,用于得到第一个子节点。
  • FirstAttribute函数,用于得到节点的第一个属性。
  • NextSiblingElement函数,用于得到下一个节点。
  • LoadFile函数,用于加载XML文件。

简单介绍了TinyXML框架之后,接下来通过一个具体的示例来介绍如何使用TinyXML框架解析XML文件。在Visual Staudio 2012中新建一个Visual C++的Windows应用商店的空白应用程序项目,并命名为CookBookDemo。

由于在C++的标准库中并未包含TinyXML框架,因此在使用TinyXML框架来解析XML文件之前,需要将此框架中的几个主要文件添加到项目里,这些文件分别是tinystr.cpp、tinystr.h、tinyxml.cpp、tinyxml.h、tinyxmlerror.cpp和tinyxmlparser.cpp。TinyXML框架的压缩包可以从"http://sourceforge.net/projects/tinyxml/"网站下载,然后按如下的步骤添加上述的主要文件。

右键点击解决方案资源管理器窗口中的项目图标,在弹出的菜单栏中选中"添加",并在"添加"的子菜单栏中选择"现有项",接着在出现的"添加现有项"窗口中选择上述压缩包中的文件,单击"添加"按钮将这些文件添加到项目中。在项目中添加"现有项"如图20-3所示。

图20-3 添加"现有项"

添加了上述TinyXML框架中的主要文件以后,需要在项目中引用相应的头文件,以便能使用TinyXML框架中的类和函数来解析XML文件。打开MainPage.xaml.cpp源文件,使用include关键字引用tinyxml.h头文件,代码如下所示:

#include "tinyxml.h"

引用了tinyxml.h头文件以后,接着为了能在项目中编译tinystr.cpp、tinyxml.cpp 、tinyxmlerror.cpp和tinyxmlparser.cpp源文件,需要分别打开这些源文件,并在文件的开头引用项目中默认的pch.h头文件。代码如下所示:

#include "pch.h"

接下来在项目中添加一个名为"CookBookXMLFile.xml"的XML文件,后面将解析这个XML文件。在解决方案资源管理器窗口中右键点击项目图标,在弹出的菜单栏中选中"添加", 并在"添加"的子菜单栏中选择"新建项",接着在出现的"添加新项"窗口中选择Visual C++菜单栏的"Web"选项,选中"XML文件",添加名为"CookBookXMLFile.xml"的XML文件。在"添加新项"窗口中添加XML文件的步骤如图20-4所示。

图20-4 在"添加新项"窗口中添加XML文件

添加了CookBookXMLFile.xml文件以后,接下来在这个文件中添加数据,后面将说明如何解析此文件来获取这些数据。CookBookXMLFile.xml文件中的代码如下所示:

<?xml version="1.0" encoding="gb2312"?>

<CookBook>

<CookStyle Name="粤菜" Image="冬瓜盅.jpg">

</CookStyle>

<CookStyle Name="川菜" Image="四川麻辣火锅.jpg">

</CookStyle>

<CookStyle Name="闽菜" Image="全丝烩鱼翅.jpg">

</CookStyle>

<CookStyle Name="东北菜" Image="东北汆白肉.jpg">

</CookStyle>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值