递归方式 DOM 解析(parse) XML

friends.xml

[html] view plain copy

  1. <span style="font-size:16px;"><?xml version="1.0" encoding="utf-8"?>
  2. <friends date="2012">
  3. <!--此处为注释-->
  4. <friend id="1">
  5. <姓名>小红</姓名>
  6. <QQ>123456789</QQ>
  7. </friend>
  8. <friend>
  9. <姓名>小平</姓名>
  10. <QQ>12345678</QQ>
  11. </friend>
  12. <friend>
  13. <姓名 mark="hello">小敏</姓名>
  14. <QQ>1234567</QQ>
  15. </friend>
  16. <friend>
  17. <姓名>小良</姓名>
  18. <QQ>987654321</QQ>
  19. </friend>
  20. <friend>
  21. <姓名>小健</姓名>
  22. <QQ>98765432</QQ>
  23. </friend>
  24. </friends>
  25. </span>

DOM   parse   XML

[java] view plain copy

  1. <span style="font-size:16px;">import java.io.File ;
  2. import javax.xml.parsers.DocumentBuilderFactory ;
  3. import javax.xml.parsers.DocumentBuilder ;
  4. import org.w3c.dom.Element ;
  5. import org.w3c.dom.Document ;
  6. import org.w3c.dom.NamedNodeMap ;
  7. import org.w3c.dom.NodeList ;
  8. import org.w3c.dom.Attr ;
  9. import org.w3c.dom.Node ;
  10. import org.w3c.dom.Comment ;
  11. //利用 递归 dom 解析任何xml文档,把xml文档加载到内存,占用内存大,可随机访问
  12. public class RecursionDOM_XML
  13. {
  14. public static void main(String[] args) throws Exception
  15. {
  16. //1.获取dom解析器工厂
  17. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance() ;
  18. //2.获取具体的dom解析器
  19. DocumentBuilder db = dbf.newDocumentBuilder() ;
  20. //获取xml文档的 根节点
  21. Document document = db.parse(new File("friends.xml") );
  22. //获取文档的 根元素节点
  23. Element e = document.getDocumentElement() ;
  24. parseXML(e) ;
  25. }
  26. public static void parseXML(Element element)
  27. {
  28. //获取 元素节点 的 信息
  29. String name = element.getNodeName() ;
  30. System.out.print("< " + name) ;
  31. //获取此元素节点的属性
  32. NamedNodeMap map = element.getAttributes() ;
  33. //获取目前element元素节点下的 孩子节点(包括空格)</span>

[java] view plain copy

  1. <span style="font-size:16px;">      NodeList child = element.getChildNodes() ;
  2. if (null != map)
  3. {
  4. for (int i = 0; i < map.getLength(); i++ )
  5. {
  6. Attr attr = (Attr)map.item(i) ;
  7. String name1 = attr.getName() ;
  8. String value1 = attr.getValue() ;
  9. System.out.print(" " + name1 +"=\"" + value1 +"\"") ;
  10. }
  11. }
  12. System.out.print(" >") ;
  13. for (int j = 0; j < child.getLength() ;j++ )
  14. {
  15. Node node = child.item(j) ;
  16. //判断该节点是不是 元素节点  ,递归路口
  17. if (node.getNodeType() == Node.ELEMENT_NODE)
  18. {
  19. //开始递归
  20. parseXML((Element)node) ;
  21. }
  22. //判断该节点是不是 文本,递归出口
  23. else if (node.getNodeType() == Node.TEXT_NODE)
  24. {
  25. System.out.print(node.getNodeValue() + "") ;
  26. }
  27. //判断该节点是不是 注释
  28. else if (node.getNodeType() == Node.COMMENT_NODE)
  29. {
  30. System.out.print("<!--");
  31. Comment comment = (Comment)node ;
  32. //注释内容
  33. String data = comment.getData() ;
  34. System.out.print(data);
  35. System.out.print("-->");
  36. }
  37. }
  38. System.out.println("</" + name + ">" ) ;
  39. }
  40. }</span>
时间: 2024-08-05 04:03:42

递归方式 DOM 解析(parse) XML的相关文章

XML 解析---dom解析和sax解析

目前XML解析的方法主要用两种: 1.dom解析:(Document Object Model,即文档对象模型)是W3C组织推荐的解析XML的一种方式. 使用dom解析XML文档,该解析器会先把XML文档加载到内存中,生成该XML文档对应的document对象,然后把XML文档中的各个标签元素变成相应的Element对象,文本会变成Text对象,属性会变成Attribute对象,并按这些标签.文本.属性在XML文档中的关系保存这些对象的关系. 缺点:消耗内存,所以使用dom解析XML文档时不能解

XML文档的DOM解析

xml的DOM解析: <?xml version="1.0" encoding="UTF-8"?> <books> <!--根节点--><!--这里的空白也算一个节点,所以books共有5个子节点--> <book id="book1" w="wwwww"> <name><a>AAAAAA</a>bookName1</name

Java XML的总结(三)--Dom解析

一.JAXP DOM解析 javax.xml.parsers 1.获得document对象 //获得实例工厂 *javax.xml.parsers.DocumentBuilderFactory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //获得解析 *javax.xml.parsers.DocumentBuilderFactory DocumentBuilder builder = factory

Java Dom解析xml

Dom解析是将xml文件全部载入,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件,下面结合这个xml文件来进行dom解析. Xml代码 <?xml version="1.0" encoding="UTF-8"?> <books> <book id="12"> <name>thinking in java</name> <price>85.5</pri

How to parse Xml file -- DOM!

We can see that when we want to use the Dom4j to parse XML , we should import org.dom4j.* At the same time ,that to parse XML by DOM ,we should import org.w3c.dom.* The conclusion is that DOM and Dom4j is different and located in different jar.The DO

iOS之数据解析之XML解析

XML解析常见的两种方式:DOM解析和SAX解析 DOM解析 DOM:Document Object Model(文档对象类型).解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历数结构可以检索任意XML节点,读取它的属性和值,而且通常情况下,可以借助XPath,直接查询XML节点. 进行DOM方式解析数据需要使用一个第三方的类GDataXMLNode GDataXMLNode是Google提供的开源XML解析类,对libxml2.tbd进行了Objective-C的

Xml----&gt;JAXP DOM解析

一.JAXP DOM解析  javax.xml.parsers    1.获得document对象        //获得实例工厂   *javax.xml.parsers.DocumentBuilderFactory        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        //获得解析  *javax.xml.parsers.DocumentBuilderFactory      

JAXP进行DOM解析的实践

比较重要的几个类,使用频率比较高的就是Document, Element与Node. 几个常用的套路: static { try { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); builder = dbFactory.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } }

XML系列:(4)XML解析-JAXP的DOM解析方式读取XML

DOM.SAX和StAX只是解析方式,没有API. JAXP是SUN提供的一套XML解析API.    JAXP(Java API for XMLProcessing,意为XML处理的Java API) JAXP很好的支持DOM和SAX解析. JAXP开发包是JAVASE的一部分,它由java.xml.org.w3c.dom.org.xml.sax包及其子包组成 products.mxl <?xml version="1.0" encoding="UTF-8"