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(); } } }