前提: 用SWT或JFace.根据XML生成如下的表格树:
http://publib.boulder.ibm.com/infocenter/adiehelp/v5r1m1/topic/com.ibm.etools.xsdeditor.doc/images/ncalxml.gif
请问有没有具体的例子?
http://publib.boulder.ibm.com/infocenter/adiehelp/v5r1m1/topic/com.ibm.etools.xsdeditor.doc/images/ncalxml.gif
请问有没有具体的例子?
package ch14;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XmlDom {
//立即加载模式
public static void readStudentXml(){
//构建文档解析器工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
try {
//构建文档解析器
DocumentBuilder builder=factory.newDocumentBuilder();
//获取文档
Document doc=builder.parse("src/ch14/Student.xml");
//获取根元素
Element root=doc.getDocumentElement();
//获取根元素的子节点
NodeList noList = root.getChildNodes();
//遍历子节点
for(int i=0;i<noList.getLength();i++){
Node node = noList.item(i);
/*
* 注意
* 如果不判断节点的类型,将会把"回车"输出为"#text"
* */
//判断节点类型是否为元素类型
if(node.getNodeType()==Node.ELEMENT_NODE){
System.out.println(node.getNodeName());//输出子结点
NodeList nChile = node.getChildNodes();
for(int j=0;j<nChile.getLength();j++){
Node nc = nChile.item(j);
if(nc.getNodeType()==Node.ELEMENT_NODE){
//System.out.println();//输出子节点
//System.out.println(nc.getFirstChild().getNodeValue());//输出子节点的值
System.out.println(nc.getNodeName()+"-"+nc.getTextContent()+"-"+((Element)node).getAttribute("id"));//输出子节点的值
/*
* 获取属性((Element)node).getAttribute("id")
* 先把有属性的节点node转换成Element元素,在根据Element的方法getAttribute获取
* */
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//测试
public static void main(String[] args) {
readStudentXml();
}
}