只需到 http://sourceforge.net/projects/tinyxml/ 下载编译即可使用,用法和其他xml操作api类似。
用法简单如下示例:
void tree(QString odir,TiXmlElement *pElem)
{
QDir dir(odir);
//QStringList filter;
//filter << "*.mp3";
//QStringList dires=dir.entryList(QDir::Dirs,QDir::Name);
QFileInfoList fileList = dir.entryInfoList();//filter);
if(!(fileList.isEmpty()))
{
QFileInfoList::Iterator file=fileList.begin();
while(file != fileList.end())
{
if((file->fileName()==".")||(file->fileName()==".."))
{
++file;
continue;
}
bool bIsDir = file->isDir();
if(bIsDir)
{
string chileElement = file->fileName().toStdString();
TiXmlElement *pChildElem = new TiXmlElement(chileElement.c_str());
pChildElem->SetAttribute("Type","folder");
pElem->LinkEndChild(pChildElem);
tree(file->filePath(),pChildElem);
}
else
{
string chileElement = file->fileName().toStdString();
TiXmlElement *pChildElem = new TiXmlElement(chileElement.c_str());
pChildElem->SetAttribute("Type","file");
pElem->LinkEndChild(pChildElem);
}
++file;
}
}
}
头文件包含 tinyxml 和 tinystr 即可。
TiXmlElement *pElem = new TiXmlElement("PATH_XML");
tree("E:\\Program Files\\airplay",pElem);
TiXmlDocument *pDoc = new TiXmlDocument;
pDoc->LinkEndChild(pElem);
TiXmlPrinter xmlPt;
pDoc->Accept(&xmlPt);
string strPath = xmlPt.CStr();
输出如下:
<PATH_XML>
<AIRPLAY.DAT Type="folder">
<airplay.cfg Type="file" />
<Album Type="folder" />
<Artist Type="folder" />
<lstuser.xml Type="file" />
<Lyrics Type="folder" />
<Playlist Type="folder">
<user0001.apl Type="file" />
</Playlist>
<System Type="folder" />
</AIRPLAY.DAT>
<AIRPLAY.exe Type="file" />
<IMG_20130914_095008.jpg Type="file" />
<IMG_20130918_181923.jpg Type="file" />
<IMG_20130923_152432.jpg Type="file" />
</PATH_XML>