package com.kxw.xml; import org.w3c.dom.*; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; /** * Created by kangxiongwei on 2015/7/16. * 解析XML文件 * 前提:不知道xml的具体格式,递归将所有节点打印出来 */ public class ParseXML { public static void main(String[] args) throws Exception{ String path = ParseXML.class.getResource("").getPath(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File(path+"/canlidate.xml")); Element root = document.getDocumentElement(); parseXML(root); } /** * 递归遍历xml,将解析结果打印 * @param element */ public static void parseXML(Element element) { //先打印标签 System.out.print("<"+element.getTagName()); //解析属性 NamedNodeMap map = element.getAttributes(); if(map != null) { for(int i=0; i<map.getLength(); i++){ Node node = map.item(i); System.out.print(" " + node.getNodeName() + "=\"" + node.getNodeValue() + "\""); } } System.out.print(">"); //解析子节点 NodeList nodeList = element.getChildNodes(); for (int i=0; i<nodeList.getLength(); i++) { Node node = nodeList.item(i); if(Element.ELEMENT_NODE == node.getNodeType()) { parseXML((Element)node); } else { //内容 System.out.print(node.getNodeValue()); } } System.out.print("</"+element.getNodeName()+">"); } }