源码:
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>
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>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货