网络服务器软件开发
C++博客
首页
新随笔
联系
聚合
管理
84 Posts :: 3 Stories :: 50 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
ACE(6)
boost(4)
C++基础(12)
CORBA(1)
Design Pattern(1)
ebook(1)
java(1)
linux(17)
mysql(5)
python(4)
STL(1)
VC/MFC/.NET(1)
办公技巧(2)
编码知识(5)
创意&想法(1)
开发感想(6)
理财(2)
其它开源库(8)
生活感想(9)
数据结构算法(1)
通信技术(5)
网络编程模型(4)
随笔档案
2008年7月 (9)
2008年6月 (10)
2008年5月 (13)
2008年4月 (2)
2008年3月 (3)
2008年1月 (1)
2007年11月 (5)
2007年9月 (1)
2007年8月 (5)
2007年7月 (3)
2007年6月 (2)
2007年5月 (4)
2007年4月 (20)
2007年3月 (6)
文章分类
设计模式
文章档案
2007年3月 (3)
搜索
积分与排名
积分 - 25440
排名 - 91
最新评论
1. re: Asio实现的实用echo server
评论内容较长,点击标题查看
--roger007
2. re: 怪异的boost,fatal error LNK1104: 无法打开文件“libboost_system-vc80-mt-gd-1_35.lib”
把boost lib里面的boost_system-vc80-mt-gd-1_35.lib等等该名字成libboost_system-vc80-mt-gd-1_35.lib就好了
--victording
3. re: Asio实现的实用echo server
python做网络测试确实不错
c++的网络库一抓一大把,而且质量都不错
--haskell
4. re: 几只股票
600499科达机电-多头行情中,且有加速上涨趋势
600506香梨股份-处于回落整理阶段,且回落有加速趋势
--true
5. re: 几只股票
002109兴化股份-没有主力或主力控股程度低
--true
阅读排行榜
1. Asio实现的实用echo server(1131)
2. State模式的应用探讨(1099)
3. boost interprocess之message queue(1065)
4. Xerces C++ 学习笔记[转](1017)
5. boost 1-35编译(972)
评论排行榜
1. 怪异的boost,fatal error LNK1104: 无法打开文件“libboost_system-vc80-mt-gd-1_35.lib”(10)
2. 为什么很多人喜欢在代码中写错别字呢(5)
3. std::queue的front的问题(3)
4. ldconfig几个需要注意的地方 zhuan(3)
5. boost 1-35编译(3)
60天内阅读排行
1. Asio实现的实用echo server(1131)
2. boost interprocess之message queue(1065)
3. boost 1-35编译(972)
4. 怪异的boost,fatal error LNK1104: 无法打开文件“libboost_system-vc80-mt-gd-1_35.lib”(257)
5. 【ZT】ADSL大型技术专题(图文)(195)
tinyxml 的使用,转
TinyXml是一个基于DOM模型的、非验证的轻量级C++解释器, 用来读写配置文件是最好的,可从
http://www.grinninglizard.com/tinyxml/index.html
这里下载。构建TinyXML 时可以选择是否支持STL, 一般建议选择支持STL。TinyXml的源码包里提供了VC6的工程文件,直接用它就可以生成静态库。然后把tinyxml.h, tinystr.h和lib拷到你工程下, 就可以用了。要注意的是, 如果需要STL支持,在你的工程里要定义一个宏TIXML_USE_STL, 然后把下面代码添加到你的代码里, 这段是摘自TinyXML自带的例子。
#ifdef TIXML_USE_STL
#include
<
iostream
>
#include
<
sstream
>
using
namespace
std;
#else
#include
<
stdio.h
>
#endif
#if
defined( WIN32 ) && defined( TUNE )
#include
<
crtdbg.h
>
_CrtMemState startMemState;
_CrtMemState endMemState;
#endif
我参考了网上的有关TinyXML的文章, 写了一个读写XML的例子,代码如下:
#include
"
tinyxml.h
"
#ifdef TIXML_USE_STL
#include
<
iostream
>
#include
<
sstream
>
using
namespace
std;
#else
#include
<
stdio.h
>
#endif
#if
defined( WIN32 ) && defined( TUNE )
#include
<
crtdbg.h
>
_CrtMemState startMemState;
_CrtMemState endMemState;
#endif
#pragma
comment(lib, "tinyxmld_STL.lib")
int
WriteXML() ;
int
ReadXML() ;
//
读取内存里的一段XML
int
ReadXML2() ;
int
main(
int
argc,
char
*
argv[])
...
{
cout
<<
"
开始测试!
"
<<
endl;
WriteXML() ;
ReadXML() ;
ReadXML2() ;
cout
<<
"
结束测试!
"
<<
endl ;
return
0
;
}
int
WriteXML()
...
{
TiXmlDocument xmlDoc(
"
test.xml
"
);
//
建立一个XML文件
TiXmlDeclaration Declaration(
"
1.0
"
,
"
gb2312
"
,
"
yes
"
);
//
声明XML的属性
xmlDoc.InsertEndChild( Declaration );
//
写入基本的XML头结构
TiXmlNode
*
pNode
=
NULL;
TiXmlElement
*
pRootElm
=
NULL;
TiXmlElement
*
pChildeElm
=
NULL;
TiXmlElement
*
pItemElm
=
NULL;
TiXmlText
*
pText
=
NULL;
//
一个指向Text的指针
pText
=
new
TiXmlText(
"
good
"
) ;
pRootElm
=
new
TiXmlElement(
"
todo
"
);
pNode
=
xmlDoc.InsertEndChild(
*
pRootElm) ;
pRootElm
=
pNode
->
ToElement() ;
pChildeElm
=
new
TiXmlElement(
"
child1
"
) ;
pChildeElm
->
SetAttribute(
"
num
"
,
9
) ;
pNode
=
pRootElm
->
InsertEndChild(
*
pChildeElm) ;
TiXmlElement
*
pChildeElm1
=
NULL;
pChildeElm1
=
pNode
->
ToElement() ;
pChildeElm1
->
InsertEndChild(
*
pText) ;
delete pChildeElm ;
pChildeElm
=
NULL ;
pChildeElm
=
new
TiXmlElement(
"
child2
"
) ;
pChildeElm
->
SetAttribute(
"
num
"
,
10
) ;
pNode
=
pRootElm
->
InsertBeforeChild (pChildeElm1,
*
pChildeElm) ;
TiXmlElement
*
pChildeElm2
=
NULL;
pChildeElm2
=
pNode
->
ToElement() ;
pChildeElm2
->
InsertEndChild(
*
pText) ;
xmlDoc.Print() ;
xmlDoc.SaveFile();
//
把XML文件写入硬盘
return
0
;
}
int
ReadXML()
...
{
cout
<<
endl ;
cout
<<
"
开始read XML
"
<<
endl ;
TiXmlDocument xmlDoc(
"
test.xml
"
);
xmlDoc.LoadFile() ;
TiXmlElement
*
xmlRootElement
=
0
;
TiXmlElement
*
xmlSubElement
=
0
;
TiXmlNode
*
pNode
=
NULL;
pNode
=
xmlDoc.FirstChild(
"
todo
"
) ;
xmlRootElement
=
pNode
->
ToElement() ;
if
(xmlRootElement)
...
{
pNode
=
xmlRootElement
->
FirstChild(
"
child1
"
) ;
xmlSubElement
=
pNode
->
ToElement() ;
cout
<<
xmlSubElement
->
Value()
<<
endl ;
cout
<<
xmlSubElement
->
Attribute(
"
num
"
)
<<
endl ;
cout
<<
xmlSubElement
->
GetText()
<<
endl ;
}
else
...
{
cout
<<
"
找不到根元素
"
<<
endl ;
}
cout
<<
"
结束read XML
"
<<
endl ;
return
0
;
}
int
ReadXML2()
...
{
cout
<<
endl ;
cout
<<
"
开始read XML
"
<<
endl ;
const
char
*
demoEnd
=
"
<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
"
"
<todo>
"
"
<child2 num="10">good</child2>
"
"
<child1 num="9">good</child1>
"
"
</todo>
"
;
TiXmlDocument xmlDoc;
xmlDoc.Parse( demoEnd ) ;
TiXmlElement
*
xmlRootElement
=
0
;
TiXmlElement
*
xmlSubElement
=
0
;
TiXmlNode
*
pNode
=
NULL;
pNode
=
xmlDoc.FirstChild(
"
todo
"
) ;
xmlRootElement
=
pNode
->
ToElement() ;
if
(xmlRootElement)
...
{
pNode
=
xmlRootElement
->
FirstChild(
"
child1
"
) ;
xmlSubElement
=
pNode
->
ToElement() ;
cout
<<
xmlSubElement
->
Value()
<<
endl ;
cout
<<
xmlSubElement
->
Attribute(
"
num
"
)
<<
endl ;
cout
<<
xmlSubElement
->
GetText()
<<
endl ;
}
else
...
{
cout
<<
"
找不到根元素
"
<<
endl ;
}
cout
<<
"
结束read XML
"
<<
endl ;
return
0
;
posted on 2007-04-04 17:14
true
阅读(424)
评论(2)
编辑
收藏
引用
所属分类:
其它开源库
Feedback
#
re: tinyxml 的使用,转
2007-05-14 08:03
zhangyingshi
突然问您个问题问题有些唐突,敬请您解答
关于tinyxml
在VC6.0中使用,源程序使用的是多线程release编译所以我把tinyxml下载文件夹里的tinyxml_lib.dsp也用多线程release编译生成了tinyxmld.lib,同两个头文件加入到程序中加入到程序中,函数调用都正常.但每次loadfile时候都失败,跟踪调试发现每次loadfile都探出一个对话框让我指定vc60.pdb的位置,制定了几次都不对
想问问您多线程编译是不是这样就可以?还是我使用tinyxml方法有问题
那个对话框是怎么回事。
该指定那个?
等待着您的回答。谢谢
回复
更多评论
#
re: tinyxml 的使用,转
2007-05-14 11:55
eXile
作为一个测试程序, WriteXML 中对象的管理很混乱, 也许是lz不拘小节, 但会给人误导...
回复
更多评论
刷新评论列表
标题
姓名
主页
验证码
*
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关链接:
相关文章:
cmarkup【转】
开源数据库概览【转】
92个经典开源项目集锦(包括URL)【转】
TinyXml总结
tinyxml 的使用,转
tinyxml 使用
Xerces C++ 学习笔记[转]
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
Powered by:
C++博客
Copyright © true