最近做一个项目,有一个模块是图片下载的功能;因为图片比较多;所以考虑写一个xml文件,把图片的路劲缩略图等信息写入一个xml文件。
思路很明确,就是递归遍历图片文件夹;把图片类型的文件读出来。因为考虑到网站性能问题,所以不能在项目中直接遍历;
要写一个控制台程序来生成这个xml文件。虽然是个很小的程序;实际项目中也遇到一些问题。在此一起贴出来跟博友一起分享一下。(我是个菜鸟)

Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Collections;
using System.IO;
namespace creatxmldoc
{
class Program
{
private static string strpath = @"C:\Website\Web\Download";
private static string filepath = @"c:\DownloadCenter.xml";
public static XmlDocument xmldoc = new XmlDocument();
public static XmlTextWriter xw = new XmlTextWriter(@"c:\DownloadCenter.xml", Encoding.UTF8);
public static void WriteXMLFromPath(string strpath1, string filepath1)
{
xw.Indentation = 2;
xw.Formatting = Formatting.Indented;
xw.WriteStartDocument();
xw.WriteStartElement("resources");
PathToDir(strpath);
xw.WriteEndElement();
xw.WriteEndDocument();
xw.Flush();
}
private static void PathToDir(string path2)
{
DirectoryInfo DirInfo = new DirectoryInfo(path2);
foreach (DirectoryInfo dir1 in DirInfo.GetDirectories())
{
xw.WriteStartElement("category");
xw.WriteAttributeString("name", dir1.Name);
GetFileInfo(dir1);
GetDir(dir1);
xw.WriteEndElement();
}
}
private static void GetDir(DirectoryInfo dir)
{
foreach (DirectoryInfo dir1 in dir.GetDirectories())
{
if (dir1.Name == "out")
{ return; }
else
{
xw.WriteStartElement("category");
xw.WriteAttributeString("name", dir1.Name);
GetFileInfo(dir1);
GetDir(dir1);
xw.WriteEndElement();
}
}
}
private static void GetFileInfo(DirectoryInfo dir)
{
foreach (FileInfo fileinfo in dir.GetFiles())
{
if (fileinfo.Extension== ".JPG" || fileinfo.Extension == ".jpg"||fileinfo.Extension==".tif")
{
//return; string sb1 = fileinfo.FullName.ToString();
string sb2 = sb1.Replace(fileinfo.Name, "out\\" + fileinfo.Name);
string sb3 = sb1.Replace("C:\\Website\\Web","..");
string sb4 = sb2.Replace("C:\\Website\\Web", "..");
xw.WriteStartElement("image");
xw.WriteAttributeString("name", fileinfo.Name);
xw.WriteAttributeString("path", sb3.ToString());
xw.WriteAttributeString("thumbnail", sb4.ToString());
xw.WriteEndElement();
}
else
{ return; }
}
}
static void Main(string[] args)
{
Console.WriteLine("start
.");
creatxmldoc.Program.WriteXMLFromPath(strpath,filepath);
Console.WriteLine("success creat a xml file!");
}
}
}