#include <QCoreApplication>
#include <QDebug>
#include <iostream>
#include "tinyxml.h" //添加头文件
/*QT5.9.1 + MSVC2015*/
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//打开xml文件
TiXmlDocument doc;
if(!doc.LoadFile("../XML/1.xml"))
{
qDebug()<<"加载XML文件失败";
const char *errorStr = doc.ErrorDesc();
qDebug()<<errorStr; //打印失败原因;
}
else
{
//成功打开XML文件
qDebug()<<"成功打开XML文件";
//获取根节点
TiXmlElement *root = doc.FirstChildElement();
//遍历根节点的属性
TiXmlAttribute *IDAttribute = root->FirstAttribute();
for(IDAttribute;IDAttribute!=NULL;IDAttribute = IDAttribute->Next())
{
string attributeName = IDAttribute->Name(); //获取属性名
string attributeValue = IDAttribute->Value(); //获取属性值
cout<<attributeName<<" = "<<attributeValue<<endl;
}
/*
* 获取根节点的第一个子节点,也可以使用其重载函数 根据元素名获取指定的子节点 如:
* const TiXmlElement* FirstChildElement( const char * _value ) const;
*/
TiXmlElement *NodeElement = root->FirstChildElement();
//NodeElement->Attribute("AttributeName"); 可以通过该方法获取指定属性的值,存在返回实际值,不存在返回NULL
//NodeElement = NodeElement->NextSiblingElement(); 可以通过该方法获取NodeElement节点的兄弟节点
string nodeElementName = NodeElement->Value(); //该节点名
string nodeElementValue = NodeElement->FirstChild()->Value(); //该节点(元素)的值
cout<<"<"<<nodeElementName<<">"<<nodeElementValue<<"</"<<nodeElementName<<">"<<endl;
}
doc.Clear();
return a.exec();
/*
由于实际有限其它函数就不一一介绍了,有时间在进行完善,谢谢;
*/
}
TinyXml下载链接:https://pan.baidu.com/s/1kXiTFSF
源码链接:https://pan.baidu.com/s/1jJRuKsQ
使用TinyXML只需要将其中的6个文件拷贝到项目中就可以直接使用了,这六个文件是:tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp;