C++解析xml文件可以使用tinyxml工具,下载网址为 www.sourceforge.net/projects/tinyxml
TiXmlDocument *pDocument = new TiXmlDocument();
pDocument->Parse(data, 0, TIXML_ENCODING_UTF8);
TiXmlElement *pElement = pDocument->RootElement();
<Root>1</Root>
<title>书名</title>
<url>www.esjiaoyi.com</url>
TiXmlDocument *pDocument = new TixmlDocument("1.xml");
TiXmlElement * pElement = pDocument->RootElement();
delete pDocument;
解析时最主要用到的三个类是TiXmlDocument,TiXmlElement和TiXmlAttributeSet。
在TiXmlDocument的基类中有一个虚函数Parse,主要功能之把一个xml数据流加载到TiXmlDocument中,
其声明为:virtual const char* Parse(const char* p, TiXmlParsingData* data, TiXmlEncoding encoding) = 0;
// 写个实例,以后好看
<book>
</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指针
这个操作不会报错,但是会造成内存的泄露。
pElement->GetText(), pElement->Value(); pElement->FirstChildElement();等等。
这样操作会造成内存的泄露,不相信的话,可以试一下!!
直接加载一个本地文件可以用new TiXmlDocument("1.xml");
创建xml文件时需要用到TiXmlDeclaration类,具体操作稍微看一下就明白了。