Java Dom 递归解析XML
2015-03-17 10:34
309 查看
package com.bryant.xml; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** <student id="1" stu="s"> <name> <firstName>bryant</firstName> <lastName>tu</lastName> </name> <age>25</age> <!-- class --> <class id="1"> <name>No.1</name> </class> </student> * </pre> */ public class TestDom { public static void main(String[] args) throws Exception { parse("E:\\student.xml"); } static void parse(String path) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File(path)); Element root = doc.getDocumentElement(); parse(root); } static void parse(Element element) { String nodeName = element.getNodeName(); System.out.print("<" + nodeName); parseAttr(element); System.out.print(">"); NodeList nodeList = element.getChildNodes(); if (nodeList != null) { int length = nodeList.getLength(); for (int i = 0; i < length; i++) { Node node = nodeList.item(i); short nodeType = node.getNodeType(); if (nodeType == Node.ELEMENT_NODE) { //递归 parse((Element) node); } else if (nodeType == Node.TEXT_NODE) { //这里会读出\n\t,所以打印不用换行 System.out.print(node.getNodeValue()); } else if (nodeType == Node.COMMENT_NODE) { System.out.print("<!--" + node.getNodeValue() + "-->"); } } } System.out.print("</" + nodeName + ">"); } static void parseAttr(Element element) { NamedNodeMap attrMap = element.getAttributes(); if (attrMap != null && attrMap.getLength() > 0) { System.out.print(" "); int length = attrMap.getLength(); for (int i = 0; i < length; i++) { Node attr = attrMap.item(i); String attrName = attr.getNodeName(); String attrValue = attr.getNodeValue(); if (i > 0) { System.out.print(" "); } System.out.print(attrName + "=\"" + attrValue + "\""); } } } }
相关文章推荐
- XML的DOM解析 Java实现 使用递归解析一个XML文档
- ML的DOM解析 Java实现 使用递归解析一个XML文档
- java DOM解析XML(2) 树
- Java 解析xml的方法:DOM,SAX
- 【原创】使用DOM解析XML文档示例(Java)
- 使用DOM解析XML文档示例(Java)
- Java中使用DOM来解析xml文档
- 利用java的Dom解析XML文件
- java中用dom解析xml的经典入门级文档
- JAVA_xml解析 dom方法实例
- Java解析xml的主要解析器: SAX和DOM的选择(附上新方法--Pull解析)
- Java解析XML文档——dom解析xml
- JAVA用DOM解析XML
- Java解析XML文档——dom解析xml
- java解析xml之一:使用SAX与DOM
- Java解析XML文档——dom解析xml (转载)
- Java解析XML文档——dom解析xml (转载)
- java中用dom解析xml的经典入门级文档
- java解析xml:使用DOM
- java解析xml方法:DOM解析、SAX解析、JDOM解析、DOM4J解析