日期:2014-05-20  浏览次数:20759 次

遍历文件夹所有子文件夹&文件并写入xml文档
输入:一个文件夹的绝对地址
输出:xml文档
要求:当是文件夹写入<文件夹的名字 Arr="文件夹">
  当是文件写入<文件名的名字 Arr="文件" length="这里输入文件的大小" extension="这里输入文件的扩展名" >
我要的是代码,我自己也试过多次了还是不成功。只能做一会伸手党。
我先贴我的代码
public void dosth()
  {
  DirectoryInfo tempDi = new DirectoryInfo(directoryName);//directoryName文件夹的绝对地址
  XmlElement xe = xDoc.CreateElement(tempDi.Name);
  xe.SetAttribute("Arr", "文件夹");
  xDoc.AppendChild(xe);
  dos(tempDi);//递归该文件夹下面的目录
  xDoc.Save(xmlName);
  }
  private void dos(DirectoryInfo dis)
  {
   
  if ((dis.GetDirectories()).Length != 0)//存在子文件夹
  {
  foreach (DirectoryInfo di in dis.GetDirectories())
  {
  XmlNode root = xDoc.SelectSingleNode(dis.Name);
  XmlElement xe = xDoc.CreateElement(di.Name);
  xe.SetAttribute("Arr", "文件夹");
  root.AppendChild(xe);
  dos(di);//递归
  }
  }
  else//dis没有子文件夹,将dis下所有文件读入xml文档
  {
  FileInfo[] files = dis.GetFiles();
  XmlNode root = xDoc.SelectSingleNode(dis.Name);//这里出问题了,不知道怎么找回dis这个node,我调试的时候root=null,但是xml文档确实存在请看下面的xml文档
  foreach (FileInfo fi in files)
  {
  XmlElement newxe = xDoc.CreateElement(fi.Name);
  newxe.SetAttribute("Arr", "文件");
  newxe.SetAttribute("Length", fi.Length.ToString());
  newxe.SetAttribute("extension", fi.Extension);
  root.AppendChild(newxe);
  }
  }
  }
<?xml version="1.0" encoding="utf-8" ?> 
- <!-- 文件夹
  --> 
- <豌豆夹 Arr="文件夹">
  <Config Arr="文件夹" /> //要找到这个Node
  </豌豆夹>

------解决方案--------------------
或者这么问这个XML文档
<?xml version="1.0" encoding="utf-8" ?>
- <!-- 文件夹
-->
- <豌豆夹 >
<Config>
<Sth1>
<Nth/>
</Sth1>
<Sth2>
<Nth2/>
</Sth2> 
</Config>
</豌豆夹>
我怎么往<Sth1>里面添加子元素呢
------解决方案--------------------
解决了~结贴