代码改变世界

把一个固定文件夹内容编入xml中(Dom4J递归)

2012-08-04 01:55  Lves Li  阅读(179)  评论(0编辑  收藏  举报
package WildCat.Xml.com;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class readFile1_1 {
	  
	 private static ArrayList filelist = new ArrayList();  
	 public static Element first1=null;
		 
     public static void main(String[] args) throws IOException { 
    	 writeXml("RAR/jim","WildCat","RAR.xml");
       
        
     }
     //该函数有两个参数,第一个是文件路径;一个是父亲节点的名字
     public static void refreshFileList(String strPath,Element first) throws IOException { 
         File dir = new File(strPath);                     
 		 File[] files = dir.listFiles(); 
 		// Document document=DocumentHelper.createDocument(first);
           if (files == null){
        	first1=first.addElement("first");
        	first1.addAttribute("name", files.toString());
        	first1.addAttribute("id", "0");
        	 return;
           }
         //递归遍历文件夹        
		         for (int i = 0; i < files.length; i++) { 
		        	 
		        	 if (!files[i].isDirectory()){
		        	 first1=first.addElement("first1");
		        	 String num=String.valueOf(i+1);	
		        	 first1.addAttribute("name", files[i].getName());
		             first1.addAttribute("id", num); 
		        	 }
		         }
        	   
		         for (int i = 0; i < files.length; i++) { 
		         		if (files[i].isDirectory()) {         		
		         		//继续向里进
		         			if(null!=files[i]){
		         		 first1=first.addElement("first1");
		         		 String num=String.valueOf(i+1);	
			        	 first1.addAttribute("name", files[i].getName());
			             first1.addAttribute("id", num); 
		                 refreshFileList(files[i].getAbsolutePath(),first1);}
		         			else
		         			{
		         				first1=first.addElement("first1");
				         		 String num=String.valueOf(i+1);	
					        	 first1.addAttribute("name", files[i].getName());
					             first1.addAttribute("id", num); 
				                 refreshFileList(files[i].getAbsolutePath(),first1);
				                 //continue;
		         			}
		                 } 
		         		else 
		         		continue;		         			
		         }      
      }
     
     public static void writeXml(String path,String rootName,String xmlPath) throws IOException
     {
    	 //根节点元素
    	 Element root=DocumentHelper.createElement(rootName);		
 		 Document document=DocumentHelper.createDocument(root);
    	
         refreshFileList(path,root);
       //输出到命令行
  		XMLWriter writer=new XMLWriter(); 		
  		writer.write(document);
  	    //写在硬盘里
		OutputFormat format=new OutputFormat("  ",true);
		XMLWriter writer2=new XMLWriter(new FileOutputStream(new File(xmlPath)),format);		
		writer2.write(document);
        
     }
        
     
}