我利用这种方式只能取到一级节点:package com.mlot.aplc.util.xml;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;import com.mlot.aplc.admin.web.popedom.action.AdminXmlDispAction;
import com.mlot.aplc.util.io.FileSymbols;public class ObjectToXml {

private final static Logger __logger = Logger.getLogger(ObjectToXml.class);

private ArrayList factList = new ArrayList();

private byte[] getXmlByte(Document doc) {
String str = null;
byte[] temp = null;
XMLOutputter out = new XMLOutputter("\t", true);
out.setEncoding("gb2312");
try {
 str = out.outputString(doc);
 temp = str.getBytes("gb2312");
} catch (Exception e) {
e.printStackTrace();
}
return temp;
}

private byte[] makeXml(ArrayList list)
{
   __logger.debug("有没有进入生成字节码的文件");    
   if(null != list)
   {
   Document doc = null;
   Element root = null;
   Element element = null;
   Element element1 = null;
   Element element2 = null;
   Element element3 = null;    
   String oneId = null;
   String twoId = null;
   String threeId = null;
   String fourId = null;
   Object[] object = list.toArray();
   __logger.debug("集合的大小为--->" + object.length);
   for(int i = object.length -1; i >= 0; i-- )
   {    
   Node node = (Node)object[i];
   if(null == node.getFatherNodeId())
   {
   __logger.debug("根结点--->");
   oneId = node.getId();
   __logger.debug("根结点ID-->" + oneId);
   __logger.debug("根结点的名称-->" + node.getCname());
   doc = new Document(new Element("DSTreeRoot")); 
   root = doc.getRootElement();
   root.setAttribute("CID", node.getId());
   root.setAttribute("CNAME", node.getCname());
   continue;
   }
   else
   {
   if(null != oneId)
   {
   __logger.debug("一级结点-->");
   twoId = node.getId();
   if(node.getFatherNodeId().equals(oneId))
   {
   element = buildElement(node);
   root.addContent(element);
   }
   continue;
   }
   if(null != twoId)
   {
   __logger.debug("二级节点--->");
   threeId = node.getId();
   if(node.getFatherNodeId().equals(twoId))
   {
   element1 = buildElement(node);
   element.addContent(element1);
   }
   continue;
   }
   if(null != threeId)
   {
   __logger.debug("三级节点");
   fourId = node.getId();
   if(node.getFatherNodeId().equals(threeId))
   {
   element2 = buildElement(node);
   element1.addContent(element2);
   }
   }   
   }       
   }    
   return getXmlByte(doc);
   }
   else
   {
   return null;
   }
   
}


/**
 * 得到用户选中的节点:通过jsp页面上的复选框进行权限控制
 * @param mainFileName
 * @param targetFileName
 * @param userSelect
 */
public void makeXmlHelp(String mainFileName, String targetFileName, String[] userSelect)
{
//群组权限IDList
ArrayList userList = null;
Node testNode = new Node();
testNode.setId("xxx");
if(null != userSelect)
{
userList = new ArrayList();
for(int i = 0; i < userSelect.length; i++)
{
userList.add(userSelect[i]);
}
// 群组权限对象List
if(null != mainFileName)
{
XmlToObject xmlToObject = new XmlToObject(mainFileName);
ArrayList mainList = xmlToObject.getAllList();
//查询用户选中的对象
Object[] mainObject = mainList.toArray();
for(int i = 0; i < mainObject.length; i++)
{
Node node = (Node)mainObject[i];
if(userList.contains(node.getId()))
{
factList.add(node);
}

}

}
}
xunzhaoFaterNode(mainFileName);
Collections.sort(factList);
for(Iterator or = factList.iterator(); or.hasNext();)
{
Node node = (Node)or.next();
__logger.debug("节点ID-->" + node.getId());
// __logger.debug("节点名称-->" + node.getCname());
__logger.debug("节点的父结点-->" + node.getFatherNodeId());
}
buildXmlFile("xxxx", factList);
}

/**
 * 得到所有的父结点:所有的父结点的href属性均为空,
 * @param mainFileName
 */
public void xunzhaoFaterNode(String mainFileName)
{
    XmlToObject xmlToObject = new XmlToObject(mainFileName);
    ArrayList mainArrayList = xmlToObject.getAllList();
    Object[] mainObject = mainArrayList.toArray();
    for(int i = 0; i < mainObject.length; i++)
    {
     Node mainNode = (Node)mainObject[i];
     if(mainNode.getHref() == null)
     {
     factList.add(mainNode);
     }
    }     
}

//生成结点
private static Element buildElement(Node node)
{
Element element = new Element("DSTree");
element.setAttribute("CID", node.getId());
element.setAttribute("CNAME", node.getCname());
if(null != node.getHref())
{
element.setAttribute("href",node.getHref());
}
return element;
}

public void buildXmlFile(String fileName, ArrayList treeList)
{
try
{
byte[] fileByte = makeXml(treeList);
String xmlFile = new String(fileByte);
__logger.debug("生成的xml内容为" + xmlFile);
// String fileDir =  fileName;
// FileWriter file = new FileWriter(fileDir);
// file.write(xmlFile);
// return true;
}catch(Exception e)
{
__logger.debug("文件抛出异常------------>");

}

}
}