dom4j解析XML文件后,显示问题!
编译了一个用DOM4J解析XML的小程序,并用JTREE显示出来,下面是XML原文件:
<?xml version="1.0" encoding="GB2312"?>
<163com><!--公司部门-->
<department name="RD">
<post name="部门经理">
<name>wangminchu</name>
</post>
<post name="项目负责人">
<name>chenfeng</name>
</post>
<post name="小组成员">
<name>zengzheng</name>
<name>zhangzhipeng</name>
<name>jiangxingzhe</name>
</post>
</department>
</163com>
然后下面是解析XML的程序:
import java.awt.BorderLayout;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
public class XmlTree extends JFrame {
XmlTree(String title) {
super(title);
try
{ SAXReader reader = new SAXReader();
Document doc=reader.read("D:/zznode.xml");
Element root = doc.getRootElement();
DefaultTreeModel model = new DefaultTreeModel(root);
JTree IJTree = new JTree();
IJTree.setModel(model);
getContentPane().add(new JScrollPane(IJTree), BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} catch (Exception e) {
System.err.println(e);
}
}
@SuppressWarnings("deprecation")
public static void main(String[] args) {
XmlTree IJTreeDemo = new XmlTree("Display xml file in JTree");
IJTreeDemo.pack();
IJTreeDemo.show();
}
}
class DefaultTreeModel implements TreeModel {
protected Element root;
public DefaultTreeModel(Element root) {
this.root = root;
}
public Object getRoot() {
return (Object) this.root;
}
public boolean isLeaf(Object node) {
if (((Node) node).getNodeType() == 1)
return false;
return true;
}
public int getChildCount(Object parent) {
Element tmpelement=(Element) parent;
return tmpelement.elements().size();
}
public Object getChild(Object parent, int childIndex) {
Element tmpelement=(Element) parent;
Element child = (Element)tmpelement.elements().get(childIndex);
System.out.println(child.getText());
return (Object) child;
}
public int getIndexOfChild(Object parent, Object child) {
Element tmpelement=(Element) parent;
List childs = tmpelement.elements();
if (childs.size() == 0)
return -1;
for (int i = 0; i < childs.size(); i++) {
if (childs.get(i) == child)
return i;
}
return -1;
}
public void valueForPathChanged(TreePath path, Object newValue) {
}
public void addTreeModelListener(TreeModelListener l) {
}
public void removeTreeModelListener(TreeModelListener l) {
}
}
运行起来没有问题,只是,在显示图像界面上,显示不出来XML元素名,如 <name>chenfeng</name>里面的 chenfeng显示不出来,调试时候发现是分步调用的,不知道自己的程序那里出现问题!用不用自己设置一个显示方式呢?怎么去设置?
希望大家帮忙研究研究!谢谢!