📄 commonparse.java
字号:
/*
* CommonParse.java
*
* Created on 2007年5月24日, 下午8:21
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package cn.vearn;
import java.util.ArrayList;
import java.io.IOException;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
/**
*
* @author Administrator
*/
public class CommonParse {
public static TreeTableModel readXML(String filename){
// 初始化
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
return null;
}
Document doc = null;
try {
doc = db.parse(filename);
} catch (DOMException dom) {
dom.printStackTrace();
return null;
} catch (IOException ioe) {
ioe.printStackTrace();
return null;
} catch (SAXException ex) {
ex.printStackTrace();
return null;
}
Element root = doc.getDocumentElement();
// 读取<class>元素列表
NodeList classNodes = root.getElementsByTagName("class");
NodeList kidNodes; // <kid>元素列表的声明
NodeList courseNodes; // <course>元素列表的声明
NodeEntity rootEntity = new NodeEntity(); // 新建一个NodeEntity实例保存根节点,注意course字段为false
rootEntity.setNodeId("root");
rootEntity.setNodeName("全部班级");
DefaultMutableTreeNode treeRoot = new DefaultMutableTreeNode(rootEntity); // 将此NodeEntity实例设为DefaultMutableTreeNode的userObject
for (int i = 0; i < classNodes.getLength(); i++) {
// 依次读取每一个<class>元素
Element classNode = (Element) classNodes.item(i);
String classId = classNode.getAttribute("id");
String className = classNode.getAttribute("name");
NodeEntity classobj = new NodeEntity(); // 新建一个NodeEntity实例保存class元素,注意course字段为false
classobj.setNodeId(classId);
classobj.setNodeName(className);
DefaultMutableTreeNode treeClass = new DefaultMutableTreeNode(classobj);
kidNodes = classNode.getElementsByTagName("kid");
for (int j = 0; j < kidNodes.getLength(); j++) {
// 依次读取每一个<kid>元素
Element kidNode = (Element) kidNodes.item(j);
String kidId = kidNode.getAttribute("id");
String kidName = kidNode.getAttribute("name"); // 新建一个NodeEntity实例保存kid元素,注意course字段为true
NodeEntity kidobj = new NodeEntity();
kidobj.setNodeId(kidId);
kidobj.setNodeName(kidName);
kidobj.setCourse(true);
courseNodes = kidNode.getElementsByTagName("course");
for (int k = 0; k < courseNodes.getLength(); k++) {
// 依次读取每一个<course>元素,并将各门功课分数添加到表示该kid元素NodeEntity实例中
Element courseNode = (Element) courseNodes.item(k);
String courseName = courseNode.getAttribute("name");
String courseValue = ((Text) courseNode.getFirstChild()).getNodeValue();
if ("chinese".equals(courseName)) {
kidobj.setChinese(Integer.parseInt(courseValue));
} else if ("maths".equals(courseName)) {
kidobj.setMaths(Integer.parseInt(courseValue));
} else if ("physics".equals(courseName)) {
kidobj.setPhysics(Integer.parseInt(courseValue));
} else if ("economics".equals(courseName)) {
kidobj.setEconomics(Integer.parseInt(courseValue));
} else if ("english".equals(courseName)) {
kidobj.setEnglish(Integer.parseInt(courseValue));
}
}
// 将表示该kid元素NodeEntity实例设为DefaultMutableTreeNode的userObject,并将这个节点加到其父节点
DefaultMutableTreeNode treeKid = new DefaultMutableTreeNode(kidobj);
treeClass.add(treeKid);
}
// 将class节点加到根节点
treeRoot.add(treeClass);
}
// 新建一个TreeTableModel实例
treeModel = new TreeTableModel(treeRoot);
return treeModel;
}
private static TreeTableModel treeModel;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -