package demo;
import java.io.File;
import java.io.InputStream;
import java.util.Properties;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
//DOM解析
public class MyXMLDOM {
public static void main(String[] args) {
long lasting=System.currentTimeMillis();
try {
File f=new File("src/a.xml");
// if(f.exists()){
// System.out.println("存在");
// }else{
// System.out.println("不存在");
// return;
// }
//获得一个DOM工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//获得一个dom解析器
DocumentBuilder builder=factory.newDocumentBuilder();
//读配置文件
Document doc=builder.parse(f);
//开始打印
//getDocumentElement 获取根节点
System.out.println("<"+doc.getDocumentElement().getNodeName()+">");
//判断该根节点下是否有子节点
if(doc.getDocumentElement().hasChildNodes()){
//利用for循环,把第一个儿子开始,一次判断下个同兄弟节点是否存在
for(Node n=doc.getDocumentElement().getFirstChild();n!=null;n=n.getNextSibling()){
//节点有很多,ELEMENT_NODE是元素节点,数字值是1
if(n.getNodeType()==Node.ELEMENT_NODE){
System.out.println(" <"+n.getNodeName()+">");
if(n.hasChildNodes()){
for(Node n1=n.getFirstChild();n1!=null;n1=n1.getNextSibling()){
if(n1.getNodeType()==Node.ELEMENT_NODE){
System.out.print(" <"+n1.getNodeName()+">");
//<name>xb</name> 注:xb算name的下一个节点 即文本节点Text_NODE
System.out.print(n1.getFirstChild().getNodeValue());
System.out.println(" </"+n1.getNodeName()+">");
}
}
}
System.out.println(" </"+n.getNodeName()+">");
}
}
}
System.out.println("</"+doc.getDocumentElement().getNodeName()+">");
System.out.println("运行时间"+(System.currentTimeMillis()-lasting)+"毫秒");
} catch (Exception e) {
e.printStackTrace();
}
}
}