***C++解析xml文件

 C++解析xml文件可以使用tinyxml工具,下载网址为 www.sourceforge.net/projects/tinyxml 
解析时最主要用到的三个类是TiXmlDocument,TiXmlElement和TiXmlAttributeSet。
在TiXmlDocument的基类中有一个虚函数Parse,主要功能之把一个xml数据流加载到TiXmlDocument中,
其声明为:virtual const char* Parse(const char* p, TiXmlParsingData* data, TiXmlEncoding encoding) = 0; 
  TiXmlDocument *pDocument = new TiXmlDocument();
  pDocument->Parse(data, 0, TIXML_ENCODING_UTF8);
  TiXmlElement *pElement = pDocument->RootElement();

// 写个实例,以后好看
  <Root>1</Root> 
<book> 
  <title>书名</title> 
  <url>www.esjiaoyi.com</url>
</book> 

pElement->FirstChildElement();
printf("%s, %s\n", pElement->Value(), pElement->GetText()); // Root,1 
pElement = pElement->NextSiblingElement(); // 得到book标签 
pElement = pElement->FirstChildElement();
printf("%s, %s\n", pElement->Value(), pElement->GetText()); // title,书名 
pElement = pElement->NextSiblingElement(); 
printf("%s, %s\n", pElement->Value(), pElement->GetText()); // url, www.esjiaoyi.com 
delete pDocument; 

注意:TiXmlDocument指针的释放,TiXmlElement指针不用释放,在TiXmlDocument析构时会递归释放TiXmlElement节点数据, 如果整个类都是操作的xml解析最好在类的析构函数中释放pDoucment指针 
这个操作不会报错,但是会造成内存的泄露。
  TiXmlDocument *pDocument = new TixmlDocument("1.xml");
  TiXmlElement * pElement = pDocument->RootElement();
  delete pDocument; 

pElement->GetText(), pElement->Value(); pElement->FirstChildElement();等等。
这样操作会造成内存的泄露,不相信的话,可以试一下!!

直接加载一个本地文件可以用new TiXmlDocument("1.xml");
创建xml文件时需要用到TiXmlDeclaration类,具体操作稍微看一下就明白了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值