Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2151570
  • 博文数量: 438
  • 博客积分: 3871
  • 博客等级: 中校
  • 技术积分: 6075
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-10 00:11
个人简介

邮箱: wangcong02345@163.com

文章分类

全部博文(438)

文章存档

2017年(15)

2016年(119)

2015年(91)

2014年(62)

2013年(56)

2012年(79)

2011年(16)

分类: LINUX

2017-02-28 11:26:22

1. 测试tinyxml库
  1. cong@msi:/work/cloud/test$ tree xml/
  2. xml/
  3. ├── a.xml                  -->测试用的xml
  4. ├── Makefile               -->Makefile
  5. ├── test.cpp               -->测试用demo
  6. ├── tinystr.cpp            -->下面这几个都是从tinyxml中扣出来的
  7. ├── tinystr.h
  8. ├── tinyxml.cpp
  9. ├── tinyxmlerror.cpp
  10. ├── tinyxml.h
  11. └── tinyxmlparser.cpp

  12. 0 directories, 9 files

2. 代码如下
  1. cong@msi:/work/cloud/test/xml$ cat test.cpp
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <errno.h>
  6. #include <iostream>
  7. #include <string>

  8. #include "tinyxml.h"

  9. #define dbmsg(fmt, args ...) printf("%s:%s[%d]: "fmt"\n", __FILE__,__FUNCTION__, __LINE__,##args)

  10. using namespace std;

  11. enum SuccessEnum {FAILURE, SUCCESS};

  12. SuccessEnum loadXML()
  13. {
  14.     TiXmlDocument doc;
  15.     //if(!doc.LoadFile("siminfo.xml"))
  16.     if(!doc.LoadFile("/tmp/siminfo.xml"))
  17.     {
  18.         cerr << doc.ErrorDesc() << endl;
  19.         return FAILURE;
  20.     }

  21.     TiXmlElement* root = doc.FirstChildElement();
  22.     if(root == NULL)
  23.     {
  24.         cerr << "Failed to load file: No root element." << endl;
  25.         doc.Clear();
  26.         return FAILURE;
  27.     }

  28.     TiXmlElement* e_fid = NULL;
  29.     TiXmlNode* n_fid= NULL;

  30.     TiXmlElement* e_sw = NULL;
  31.     TiXmlNode* n_sw= NULL;

  32.     TiXmlElement* e_res_len = NULL;
  33.     TiXmlNode* n_res_len = NULL;

  34.     TiXmlElement* e_res = NULL;
  35.     TiXmlNode* n_res = NULL;

  36.     TiXmlElement* e_bin = NULL;

  37.     TiXmlElement* e_item = NULL;
  38.     TiXmlNode* n_item = NULL;

  39.     for(TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
  40.     {
  41.         e_fid = elem->FirstChildElement("FID");
  42.         n_fid = e_fid->FirstChild();
  43.         dbmsg("FID=%s",n_fid->ToText()->Value());

  44.         e_sw = elem->FirstChildElement("SW");
  45.         n_sw = e_sw->FirstChild();
  46.         dbmsg("SW=%s",n_sw->ToText()->Value());
  47.     
  48.         e_res_len = elem->FirstChildElement("RES_LENGTH");
  49.         if(NULL==e_res_len)
  50.             continue;
  51.         n_res_len = e_res_len->FirstChild();
  52.         dbmsg("RES_LENGTH=%s",n_res_len->ToText()->Value());

  53.         e_res = elem->FirstChildElement("RES");
  54.         if(NULL==e_res)
  55.             continue;
  56.         n_res = e_res->FirstChild();
  57.         dbmsg("RES=%s",n_res->ToText()->Value());

  58.         e_bin = elem->FirstChildElement("BIN");
  59.         if(NULL==e_bin)
  60.             continue;
  61.         e_item = e_bin->FirstChildElement("ITEM");
  62.         n_item = e_item->FirstChild();
  63.         dbmsg("ITEM=%s",n_item->ToText()->Value());

  64.         dbmsg();
  65.     }
  66.     doc.Clear();
  67.     return SUCCESS;
  68. }

  69. int main(int argc, char* argv[])
  70. {
  71.     if(loadXML() == FAILURE)
  72.         return 1;
  73.     return 0;
  74. }
  75. cong@msi:/work/cloud/test/xml$
3. 代码下载
xml.rar(下载后改名为xml.tar.gz)

阅读(1045) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~