递归方式 DOM 解析(parse) XML
2012-02-26 01:46
302 查看
friends.xml
DOM parse XML
<?xml version="1.0" encoding="utf-8"?> <friends date="2012"> <!--此处为注释--> <friend id="1"> <姓名>小红</姓名> <QQ>123456789</QQ> </friend> <friend> <姓名>小平</姓名> <QQ>12345678</QQ> </friend> <friend> <姓名 mark="hello">小敏</姓名> <QQ>1234567</QQ> </friend> <friend> <姓名>小良</姓名> <QQ>987654321</QQ> </friend> <friend> <姓名>小健</姓名> <QQ>98765432</QQ> </friend> </friends>
DOM parse XML
import java.io.File ; import javax.xml.parsers.DocumentBuilderFactory ; import javax.xml.parsers.DocumentBuilder ; import org.w3c.dom.Element ; import org.w3c.dom.Document ; import org.w3c.dom.NamedNodeMap ; import org.w3c.dom.NodeList ; import org.w3c.dom.Attr ; import org.w3c.dom.Node ; import org.w3c.dom.Comment ; //利用 递归 dom 解析任何xml文档,把xml文档加载到内存,占用内存大,可随机访问 public class RecursionDOM_XML { public static void main(String[] args) throws Exception { //1.获取dom解析器工厂 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance() ; //2.获取具体的dom解析器 DocumentBuilder db = dbf.newDocumentBuilder() ; //获取xml文档的 根节点 Document document = db.parse(new File("friends.xml") ); //获取文档的 根元素节点 Element e = document.getDocumentElement() ; parseXML(e) ; } public static void parseXML(Element element) { //获取 元素节点 的 信息 String name = element.getNodeName() ; System.out.print("< " + name) ; //获取此元素节点的属性 NamedNodeMap map = element.getAttributes() ; //获取目前element元素节点下的 孩子节点(包括空格)
NodeList child = element.getChildNodes() ; if (null != map) { for (int i = 0; i < map.getLength(); i++ ) { Attr attr = (Attr)map.item(i) ; String name1 = attr.getName() ; String value1 = attr.getValue() ; System.out.print(" " + name1 +"=\"" + value1 +"\"") ; } } System.out.print(" >") ; for (int j = 0; j < child.getLength() ;j++ ) { Node node = child.item(j) ; //判断该节点是不是 元素节点 ,递归路口 if (node.getNodeType() == Node.ELEMENT_NODE) { //开始递归 parseXML((Element)node) ; } //判断该节点是不是 文本,递归出口 else if (node.getNodeType() == Node.TEXT_NODE) { System.out.print(node.getNodeValue() + "") ; } //判断该节点是不是 注释 else if (node.getNodeType() == Node.COMMENT_NODE) { System.out.print("<!--"); Comment comment = (Comment)node ; //注释内容 String data = comment.getData() ; System.out.print(data); System.out.print("-->"); } } System.out.println("</" + name + ">" ) ; } }
相关文章推荐
- 递归方式 DOM 解析(parse) XML
- 递归方式 DOM 解析(parse) XML
- 递归方式 DOM 解析(parse) XML
- 递归方式 DOM 解析(parse) XML
- 解析XML三种方式(PULL、SAX、DOM)
- XML的两种解析方式Dom和SAX的区别
- android解析XML总结-SAX、Pull、Dom三种方式
- 应用DOM方式解析XML
- dom解析非递归方式实现
- 解析xml的四种方式:DOM JDOM DOM4J SAX
- android解析XML总结(SAX、Pull、Dom三种方式) <转载>
- Android中使用DOM解析xml时出现org.xml.sax.SAXParseException: Unexpected token
- XML的四种解析方式之DOM
- XML两种解析方式:SAX和DOM性能对比
- “用dom4j解析包”对xml进行dom方式操作中文乱码解决方案
- QT开发(四十二)——DOM方式解析XML
- XML-02总结---DOM方式解析XML
- XML解析的两种方式DOM和SAX
- JAVA解析XML之DOM方式
- 解析XML总结(SAX、Pull、Dom三种方式)