天天看点

c++解析xml文件

今天使用c++写设计模式的作业,便要使用到xml文件。

作为一个数据传输文件,获取其内容十分重要,于是便搜索了如何在c++环境下解析xml文件。

我用的工具是VS2009,因为占用内存较少,而且足够我使用。

解析xml文件有很多第三方库,但大多使用的都是tiny2XML来解析,于是我也使用这个第三方库。

遇到了很多问题,记住VS中的文件是要引入的,而非复制粘贴的,否则找不到。

首先头部这样写就行

c++解析xml文件
 其次文件这样引入
c++解析xml文件

我想都会吧

但是头文件这里出现了问题,找不到tinyxml2.h

后来百度搜索发现右击项目名称,点击最下方的属性,找到C/C++常规加上.h文件所在路径就解决了,只是这个项目

c++解析xml文件
 随后写代码解析xml文件

int main(){
  NvWa nw;
  XMLDocument xml;
  xml.LoadFile("config.xml");

  XMLElement *category = xml.RootElement();
  XMLElement *con = category->FirstChildElement("Name");
  const char* name = con->GetText();
  cout << name << endl;

  Person *p = nw.makePerson(name);
  p->show();

}      

  

1. 首先定义一个xml的文件对象: TiXmlDocument doc;

2. 然后开始加载文件: doc.LoadFile("test.xml")

3. 获得根节点, TiXmlElement* root = doc.FirstChildElement();

4. 获得根节点级别下的第一个节点(因为平时的跟节点通常是这么设计的, 用来说明这个文档所描述的对象)

在例子里就是number: TiXmlElement* elem = root->FirstChildElement();

5. 如果要访问grade节点,也就是说访问number的兄弟节点,那么就是 TiXmlElement elem2 = elem->NextSiblingElement();

非常简单直白

6. 如果要访问其中的属性呢,比如说number里的属性in_use的值, 那么就是elem->Attribute("in_use");

7. 如果想获得“233”这个值,就用elem->GetText();

————————————————

继续阅读