Java编写程序对XML进行遍历输出



Java编写程序对XML进行遍历输出

xml文档内容如下:
<?xml version=”1.0″ encoding=”UTF-8″?>
<root>
<item>
<id>101</id>
<name>zk</name>
<sno>1091380112</sno>
<sex>M</sex>
<age>100</age>
</item>
<item>
<id>102</id>
<name>teacher</name>
<sno>0673892</sno>
<sex>M</sex>
<age>130</age>
</item>
</root>

所需的java程序如下:
//引用包名这里省略
public class domTraverse {
public static void main(String args[]){
try{
//静态方法newInstance得到解析工厂实例
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//用解析工厂的newDocumentBuilder()方法得到解析对象
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse(new File(“Web/sourceXML.xml”));
//调用遍历节点方法,参数为根节点
nodeTranserse(document.getDocumentElement());//遍历xml根节点root
String root=document.getDocumentElement().getNodeName();//根节点名称
System.out.print(“</”+root+”>”);//遍历完之后,结束根节点名称
//当初一直得不到根节点root的结束标签
}catch(Exception e){
System.out.println(e);
}
}

public static void nodeTranserse(Node node){
String rNodeName=node.getNodeName();//当前遍历元素名称
if(node.getNodeType()==Node.ELEMENT_NODE){ //为节点类型,输出节点名称
System.out.print(“<”+rNodeName+”>”);
}
if(node.getNodeType()==Node.TEXT_NODE){ //文本类型,输出文本
System.out.print(((Text)node).getWholeText());
}

NodeList allNodes=node.getChildNodes();//获取所要遍历节点的子节点
int size=allNodes.getLength();
if(size>0){
for(int j=0;j<size;j++){
Node childNode=allNodes.item(j);
nodeTranserse(childNode);
if(childNode.getNodeType()==Node.ELEMENT_NODE){
//每遍历完一个标签,输出结束标签
System.out.print(“</”+childNode.getNodeName()+”>”);
}
}
}
}//End of nodeTranserse

}