源码:
import javax.swing.*;
import javax.swing.tree.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;
public class XMLTree extends JTree{ 
  private DefaultMutableTreeNode treeNode; //JTree的根节点
  private DocumentBuilderFactory dbf; 
  // 这三个成员变量是xml parser需要的
  private DocumentBuilder db; 
  private Document doc; 
  //
  XMLTree(String fileName){
    dbf = DocumentBuilderFactory.newInstance(); 
    //生成dbf的实例
    db = dbf.newDocumentBuilder(); 
    //生成db的实例
    treeNode = LoadFile( getXMLRoot( "text" ) ); 
    //解析该xml文件,返回JTree的根节点
    setModel( new DefaultTreeModel( treeNode ) ); 
    //根据该根节点生成JTree
  }
  public void SaveToFile(DefaultMutableTreeNode root, FileWriter fw)
  {
    try
    {
     if (root.isLeaf())
     fw.write(root.toString()+"\r\n");
//如果是叶子节点则直接将该节点输出到文件中
   else
  {
    //不是叶子节点的话递归输出该节点
        fw.write("<"+root.toString()+">\r\n");
        for (int i=0; i < root.getChildCount(); i++)
        {
          DefaultMutableTreeNode childNode =(DefaultMutableTreeNode)root.getChildAt(i);
          saveFile(childNode, fw);
          //递归输出该节点的所有子节点
        }
        fw.write("</"+root.toString()+">\r\n");
      }
    }
    catch(Exception e)
    {
      e.printStackTrace();
     }
  }
private Node getXMLRoot(String text)
{
    ByteArrayInputStream byteStream;
    byteStream = new ByteArrayInputStream(text.getBytes()); 
    //将XML文件读到Stream里去
    try{
      doc = db.parse( byteStream ); 
      //解析该xml文件。
    } 
catch( Exception e )
    { 
  e.printStackTrace();
}
    return ( Node )doc.getDocumentElement();
    //返回该XML文件的DOM树的根元素
  }
}xml文件:
<?xml version=“1.0”encoding=“GB2312”?>
<skin>
<skin1>
<name>古典</name>
<dir>d:\software\App\skin</dir>
<head>head1.bmp</head>
<center>center1.bmp</center>
<foot>foot1.bmp</foot>
</skin1>
<skin2>
<name>现代</name>
<dir>d:\software\App\skin</dir>
<head>head2.bmp</head>
<center>center2.bmp</center>
<foot>foot2.bmp</foot>
</skin2>
</skin>