- 浏览: 2000463 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的COM组件
// TestXml.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <windows.h> #include "tinyxml.h" #include "lang.h" #include <string> using namespace std; using namespace std; #pragma comment(lib, "tinyxmld.lib") BOOL LoadXml(TiXmlDocument&doc, LPCTSTR lpszSrcPath); BOOL SaveXml(TiXmlDocument&doc, LPCTSTR lpszDstPath); BOOL GetDeclare(TiXmlDocument&doc); BOOL ReadXmlText(TiXmlDocument&doc); BOOL ParseXmlText(TiXmlElement* pEleRoot); BOOL ReadXmlAttr(TiXmlDocument&doc); BOOL ParseXmlAttr(TiXmlElement* pEleRoot); BOOL AddNode(TiXmlDocument& doc); BOOL DelNode(TiXmlDocument& doc); int _tmain(int argc, _TCHAR* argv[]) { TiXmlDocument doc; //load xml if (!LoadXml(doc, "./test_copy.xml")) { return -1; } //get declare GetDeclare(doc); //add and del DelNode(doc); AddNode(doc); cout << "============================Read Text==========================" << endl; //read text ReadXmlText(doc); cout << "============================Read Attribute==========================" << endl; //read attribute ReadXmlAttr(doc); if (!SaveXml(doc, "./test2.xml")) { return -1; } return 0; } BOOL LoadXml(TiXmlDocument&doc, LPCTSTR lpszSrcPath) { //load file if (!doc.LoadFile(lpszSrcPath)) { cout << "load xml failed!" << endl; return FALSE; } //print doc.Print(); return TRUE; } BOOL SaveXml(TiXmlDocument&doc, LPCTSTR lpszDstPath) { //save file if (!doc.SaveFile(lpszDstPath)) { cout << "save xml failed!" << endl; } else { cout << "save xml succ!" << endl; } return TRUE; } BOOL GetDeclare(TiXmlDocument&doc) { TiXmlNode* pXmlFirst = doc.FirstChild(); if (NULL != pXmlFirst) { TiXmlString str; TiXmlDeclaration* pXmlDec = pXmlFirst->ToDeclaration(); if (NULL == pXmlDec) { pXmlDec->Print(0, 1, &str); //cout << "szDecInfo:" << str << endl; cout << "szVer:" << pXmlDec->Version() << " is absolute:" << pXmlDec->Standalone() << "code type:" << pXmlDec->Encoding() << endl; } return TRUE; } return FALSE; } BOOL ReadXmlText(TiXmlDocument&doc) { //get root pointer TiXmlElement* pXmlRoot = doc.RootElement(); if (NULL == pXmlRoot) { return FALSE; } TiXmlNode* pParent = pXmlRoot->Parent(); TiXmlNode* pChild = pXmlRoot->FirstChild(); return ParseXmlText(pXmlRoot); } BOOL ParseXmlText(TiXmlElement* pEleRoot) { if (NULL == pEleRoot) { return FALSE; } TiXmlElement* pEle = NULL; for (pEle = pEleRoot->FirstChildElement(); pEle; pEle = pEle->NextSiblingElement()) { cout << "\t"; //递归处理 ParseXmlText(pEle); const char* pszText = pEle->GetText(); if (NULL != pszText) { cout << pszText; } cout << endl; } return TRUE; } BOOL ReadXmlAttr(TiXmlDocument&doc) { //get root TiXmlElement* pEleRoot = doc.RootElement(); if (NULL == pEleRoot) { return FALSE; } return ParseXmlAttr(pEleRoot); } BOOL ParseXmlAttr(TiXmlElement* pEleRoot) { if (NULL == pEleRoot) { return FALSE; } TiXmlElement* pEle = pEleRoot; TiXmlAttribute* pAttr = NULL; cout << "\t"; //print owner info cout << "node:" << pEle->Value(); for (pAttr = pEle->FirstAttribute(); pAttr; pAttr = pAttr->Next()) { cout << "\t"; cout << "attr:" << pAttr->Name() << "\t val:" << pAttr->Value() << "\t"; } cout << endl; for (pEle = pEleRoot->FirstChildElement(); pEle; pEle = pEle->NextSiblingElement()) { cout << "\t"; //递归处理子节点 ParseXmlAttr(pEle); } return TRUE; } BOOL AddNode(TiXmlDocument& doc) { TiXmlElement node("aaa"); node.SetValue("add node"); doc.InsertEndChild(node); return TRUE; } BOOL DelNode(TiXmlDocument& doc) { doc.Clear(); return TRUE; }
发表评论
-
Berkeley DB 使用经验总结
2012-08-27 14:41 3027作者:陈磊 NoSQL是现在互联网Web2.0时代备受 ... -
嵌入式数据库系统Berkeley DB
2012-08-27 14:37 1476前言 UNIX/LINUX平台下的数据库种类非常多 ... -
C语言中标准输入流、标准输出流、标准错误输出流
2011-06-13 14:32 9198C语言中标准输入流、标准输出流、标准错误输出流 在 ... -
Rsync 实现原理
2011-05-12 20:06 8253Rsync 实现原理 前言 关于rsync的原始文档 ... -
c++简单的虚函数测试
2011-04-27 14:25 969#include <iostream> u ... -
C++文件行查找
2011-04-26 14:10 1353#include <iostream> # ... -
c++偏特化简单示例
2011-04-13 11:17 2109c++偏特化 // temp1.c ... -
GDB调试精粹及使用实例
2011-03-16 14:06 1083GDB调试精粹及使用实例 一:列文件清单 1. ... -
简单的ini文件解析
2011-02-12 16:36 1573int GetKeyVal(const string s ... -
scanf族函数高级用法
2011-01-25 16:00 2484如何解释 fscanf(fd,&quo ... -
使用scons替代makefile(1)
2011-01-25 11:58 3641早在多年前我刚开始接触linux下的C程序时,经常被makef ... -
使用scons替代makefile(2)
2011-01-25 11:57 3530本篇文章接着上一篇进一步介绍scons的使用方法,主要介绍静态 ... -
使用scons替代makefile(3)
2011-01-25 11:55 4776在上两篇文章中已经简单介绍了用scons编译库文件,可执行程序 ... -
C 支持动态添加测试数据的测试代码
2011-01-13 17:22 1079/下面的定义为了支持可扩增。 //当需要增加一个新的测试用列 ... -
Linux下Makefile的automake生成
2010-12-28 16:55 1049******************helloworld.c* ... -
SCons笔记(详细版)
2010-12-23 16:11 103761. 基本使用 SConstruct文件就功能而言相当于Ma ... -
scons 学习
2010-12-23 11:14 2112scons 学习 作者:Sam(甄峰) sam_code@h ... -
scons随笔
2010-12-22 20:20 4640scons随笔 Scons是新一代的软件构件工具,或者说ma ... -
Scons在linux下的安装和使用
2010-12-21 11:59 3197因为正在用的一个开源软件需要的Developm ... -
排列组合的实现
2010-12-20 12:41 1012简单算法: 从前往后(或者从后往前)每次交换一个位置。当存在 ...
相关推荐
该项目演示了TinyXML的引入与使用,适合于首次接触xml解析的初学者。(这是自己第一次接触xml解析,所以仅涉及几个基本函数的使用,内容较为简单) 本项目包含了以下几个文件: run_test.sh shell文件,清理当前...
C++第三方Xml解析库,亲测好用,在这里免费提供给大家,将会配有使用此库读取Xml代码示例,大家可到博客中搜索“C++之tintxml2库读取Xml示例”。
TinyXML2是简单实用的开源C++ XML文件解析库,可以很方便的应用到现有的项目之中。TinyXML1与TinyXML2这两个著名的开源XML文件解析库均出自Lee Thomason之手。本文件是提取作者最新上传的文件,并添加了两个示例文件...
TinyXML-2 TinyXML-2是一个简单,小型,高效的C ++ XML解析器,可以轻松地集成到其他程序中。 主机托管在github上:https://github.com/leethomason/tinyxml2这些TinyXML-2的在线HTML版本TinyXML-2是一个简单,小型...
TinyXML-2 TinyXML-2是一个简单,小型,高效的C ++ XML解析器,可以轻松地集成到其他程序中。 主机托管在github上: : 这些文档的在线HTML版本: : 示例在HTML文档的“相关页面”选项卡中。它能做什么。 简而言之,...
功能强大的c++的XML解析器, <br>推荐下载, 源码+示例
tiny.xml 是应用在浏览器里的XML解析器,只有1.6kb大小。暂时不支持Node.js,如果你想让其支持Node.js,可以参看这里。安装npm安装npm install tiny.xml直接从CDN获取使用<!-- Unminified 3.3KB --> ...
这是我从sourceforge上下载的XML解析软件,说实在的,不是很好用。我分别在win32和linux系统下写了编译脚本,并且从新写了一个示例程序,里面做了简单的注释.如果有兴趣,可以下载看看,看有没有什么问题.
在百度上搜“C++读取Xml文件”,可以出来很多博客,大多数是关于tinyXml的,所以这篇博文也是讲述如何用tinyXML来读取XML文件。 tinyXml是一个免费开源的C++库,可以到官网上下载:...
返回一个充满地图数据的结构轻的使用TinyXML2 解析XML,CSV或Base64层(尚无压缩) 易于加入项目去做单元/覆盖测试解析压缩图层图块数据解析地形检查NULL并报告某些“必需”属性的错误编译中有关示例,请参见...