XML文件如下:
<?xml version="1.0" encoding="GBK"?>
<menuItems>
<name>根节点</name>
<icon></icon>
<panelName></panelName>
<mothodName></mothodName>
<args></args>
<menuItem>
<name>节点一</name>
<icon>folder_fromFile.gif</icon>
<panelName>
com.heyang.view.panel.content.folder.addfromfile.AddCategoryFromFilePanel
</panelName>
<mothodName></mothodName>
<args></args>
</menuItem>
<menuItem>
<name>节点二</name>
<icon>folder_attribute.gif</icon>
<panelName>
com.heyang.view.panel.content.folder.attribute.AttributeMngPanel
</panelName>
<mothodName></mothodName>
<args></args>
</menuItem>
<menuItem>
<name>节点三</name>
<icon>folder_transfer.gif</icon>
<panelName>
com.heyang.view.panel.content.folder.transfer.FolderTransferPanel
</panelName>
<mothodName></mothodName>
<args></args>
</menuItem>
</menuItems>
读取例程:
/**
* 按照XML文件建立一棵树
*
* @author:何杨
* @date:2009-12-22
* @time:上午08:13:09
*/
@SuppressWarnings("unchecked")
private void buildTree(){
// 建立树节点
DefaultMutableTreeNode root = null;
try {
SAXReader reader = new SAXReader();
String xmlFile = TreeMenuPanel.class.getResource("/text.xml").getPath()
.toString();
File file=new File(xmlFile);
if(file.exists()==false){
DlgUtil.popupErrorDialog("无法找到文件"+xmlFile+".");
return;
}
Document document = reader.read(file);
Element rootElm = document.getRootElement();
// 遍历XML生成节点树
root=getNode(rootElm);
} catch (Exception ex) {
ex.printStackTrace();
}
// 将节点树赋予树组件
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.setRoot(root);
model.reload();
tree.updateUI();
}
/**
* 递归取得节点
*
* @author:何杨
* @date:2010-1-11
* @time:上午08:31:12
* @param elm
* @return
*/
@SuppressWarnings("unchecked")
private DefaultMutableTreeNode getNode(Element elm){
String name=elm.elementText("name");
String icon=elm.elementText("icon");
String panelName=elm.elementText("panelName");
String mothodName=elm.elementText("mothodName");
String args=elm.elementText("args");
MenuItem menuItem=new MenuItem(name,icon,panelName,mothodName,args);
DefaultMutableTreeNode leaf = new DefaultMutableTreeNode();
leaf.setUserObject(menuItem);
List<Element> elms = elm.elements("menuItem");
for (Element element : elms) {
leaf.add(getNode(element));
}
return leaf;
}