tinyxml简单解析

只需到 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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值