***C++解析xml文件

来源:互联网 发布:网络棋牌游戏宣传语 编辑:程序博客网 时间:2024/06/05 10:17
 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类,具体操作稍微看一下就明白了。

原创粉丝点击