将 Web 浏览器收藏夹导出到 XML 文件






3.67/5 (2投票s)
本文提供了一种导出网页浏览器收藏的方法。

引言
本文将向您展示一种简单的导出网页浏览器收藏的方法。正如我们所知,网页浏览器的导入和导出收藏功能已被删除。因此,我们必须自行实现。
关于代码
如果您想导出收藏,您必须知道它们存储的位置。它们可以在注册表中找到的 *.URL 目录中找到。之后,读取所有项目并获取名称和 URL。问题是如何获取 *.url 文件的 URL?实际上,这很简单。“*.url”文件与“*.ini”文件类似。因此,您可以像操作 INI 文件一样操作它们。请查看以下内容
[DEFAULT]
BASEURL=http://faq.csdn.net/read/196943.html
[InternetShortcut]
URL=http://faq.csdn.net/read/196943.html Modified=D09A951BEAD2CA01A1
打开 *.url 文件,您会找到以下片段。
void CExportDlg::OnExport()
{
// TODO: Add your control notification handler code here
CString strFilePath,favpath;
// Get the location of favorites.
HKEY hKEY;
DWORD type=REG_SZ;
LPCTSTR path=
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
DWORD cbData=80;
TCHAR buf[512];
::RegOpenKeyEx(HKEY_CURRENT_USER,path,0,KEY_READ,&hKEY);
::RegQueryValueEx(hKEY,"Favorites",NULL,&type,(LPBYTE)buf,&cbData);
::RegCloseKey(hKEY);
favpath.Format ("%s",buf);
favpath+="\\*.url";
GetDlgItem(IDC_EDIT1)->GetWindowText (strFilePath.GetBuffer (256),256);
BOOL bWorking;
CFileFind ffd;
bWorking=ffd.FindFile (favpath);
CString strUrl;
if(strFilePath!="")
{
CMarkup xml;
xml.AddElem ("main");
xml.AddAttrib ("version","2");
LPSTR url=new char[512];
while(bWorking)
{
bWorking=ffd.FindNextFile ();
if(!ffd.IsDots()&&!ffd.IsDirectory ())
{
GetPrivateProfileString("InternetShortcut",
"URL",NULL,url,512,ffd.GetFilePath ());
xml.AddChildElem ("ITEM",url);
xml.IntoElem();
xml.AddAttrib ("IsFolder","0");
CString AttribName;
AttribName=ffd.GetFileName();
xml.AddAttrib ("name",AttribName.Left
(AttribName.GetLength ()-4));
xml.OutOfElem ();
}
}
delete [] url;
CString csXML=xml.GetDoc ();
CString xmlfile;
xmlfile=" ";
xmlfile+=csXML;
CFile file(strFilePath,CFile::modeWrite|CFile::modeCreate );
file.WriteHuge (xmlfile.GetBuffer (5000),xmlfile.GetLength ());
if(IDOK==AfxMessageBox("Export finished!"))
this->PostMessage (WM_CLOSE,0,0);
}
}
CMarkup
是我在 CodeProject 上找到的一个类... 我非常感谢作者。希望对您有所帮助。
历史
- 2010 年 3 月 7 日:初始发布