1.Node准备

Node接口是整个文档对象模型的主要数据类型,它表示该文档树中的单个节点。例如Attr, CharacterData, Comment, Text,Element都是Node的子类。 xml解析的误区: 在xml文件解析过程中,所有信息都被当做一个对象,例如解析下面的语句

  1. /*
  2. * <book>AAA<name>java语法</name>BBB</book>
  3. * 该book下的直接子节点有3个,AAA和BBB被解析为CharacterData类型的节点,<name>被解析为Element类型的节点,
  4. *
  5. * <book> <name>java语法</name> </book>
  6. * 该book下的直接子节点有3个,由于在<name>之前有个换行,CharacterData类型的节点
  7. * <book><name>java语法</name></book> 该book下的直接子节点只有1个
  8. */

2.Dom解析优缺点

优点:整个文档读入内存,方便操作:支持修改、删除和重现排列等多种功能。

缺点:将整个文档读入内存中,保留了过多的不需要的节点,浪费内存和空间。

3.Dom解析xml

  1. /**
  2. * 解析xml文件,遍历并所有信息
  3. */
  4. public static void parseXMl() {
  5. try {
  6. // 1.通过DocumentBuilder工厂得到对应的xml解析器
  7. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  8. DocumentBuilder builder = factory.newDocumentBuilder();
  9.  
  10. // 2.通过解析器得到Document对象
  11. Document doc = builder.parse("d:/my.xml");
  12.  
  13. // 3.解析数据
  14. /*
  15. * <book>
  16. * <name>javaWeb</name>
  17. * <author>fanglx</author>
  18. * <price>30.90</price>
  19. * </book>
  20. */
  21. //得到所有的book的标签的nodelist
  22. NodeList nodeList = doc.getElementsByTagName("book");
  23. //遍历每个book节点
  24. for(int i=0; i<nodeList.getLength(); i++){
  25. Node node = nodeList.item(i); //当前遍历的book节点
  26. //得到该book节点下的所有的直接子节点
  27. NodeList childNodes = node.getChildNodes();
  28. for(int j=0; j<childNodes.getLength(); j++){
  29. Node childNode = childNodes.item(j);
  30. //如果当前的childNode节点是一个标签,CharacterData类型的文本节点则不执行
  31. if(childNode instanceof Element){
  32. String fieldName = childNode.getNodeName(); //当前节点名称 比如author
  33. String value = childNode.getTextContent(); //当前节点的text值比如fanglx
  34. /*
  35. * 或者下面方式得到value值
  36. * String value = childNode.getFirstChild().getNodeName();//fanglx
  37. */
  38. System.out.println(fieldName+"="+value); //author=fanglx
  39. }
  40. }
  41. }
  42. } catch (Exception e) {
  43. e.printStackTrace();
  44. }
  45. }
  1. /**
  2. * 对xml文件的更新
  3. */
  4. public static void updateXMl() {
  5. try {
  6. // 1.通过DocumentBuilder工厂得到对应的xml解析器
  7. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  8. DocumentBuilder builder = factory.newDocumentBuilder();
  9.  
  10. // 2.通过解析器得到Document对象
  11. Document doc = builder.parse("d:/my.xml");
  12.  
  13. // 3.更新数据
  14. /*
  15. * <book>
  16. * <name>javaWeb</name>
  17. * <author>fanglx</author>
  18. * <price>30.90</price>
  19. * </book>
  20. */
  21. NodeList nodeList = doc.getElementsByTagName("book");
  22. Element parentEle = (Element) nodeList.item(0);
  23.  
  24. //直接在子标签的尾部增加<num id="1001">25</num>
  25. Element childEle = doc.createElement("num");
  26. childEle.setAttribute("id", "1001");//设置属性
  27. childEle.setTextContent("25"); //设置值
  28. parentEle.appendChild(childEle);
  29.  
  30. //直接在price标签前面增加<age id="25">mm</age>
  31. Element newChild = doc.createElement("age");
  32. newChild.setAttribute("id", "25"); //设置属性
  33. newChild.setTextContent("mm"); //设置值
  34. Element refChild = (Element) parentEle.getElementsByTagName("price").item(0);
  35. parentEle.insertBefore(newChild, refChild);
  36.  
  37. // 4.保存更新的数据
  38. TransformerFactory tFactory = TransformerFactory.newInstance();
  39. Transformer transformer = tFactory.newTransformer();
  40. transformer.transform(new DOMSource(doc), new StreamResult(new File("c:/my.xml")));
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44. }
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <books>
  3. <book>
  4. <name>javaWeb</name>
  5. <author>fanglx</author>
  6. <price>30.90</price>
  7. </book>
  8. </books>

Java_xml_Dom解析方式的更多相关文章

  1. iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)

    <分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...

  2. 用java操作XML文件(DOM解析方式)

    XML 可扩展标记语言(Extensible Markup Language),是独立于软件和硬件的传输工具. XML的作用: (1)用作配置文件 (2)简化数据共享 (3)简化数据传输 XML DO ...

  3. JSON的三种解析方式

    一.什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定 ...

  4. Android中的三种XML解析方式

    在Android中提供了三种解析XML的方式:SAX(Simple API XML),DOM(Document Objrect Model),以及Android推荐的Pull解析方式.下面就对三种解析 ...

  5. XML的解析方式(DOM、SAX、StAX)

    (新)  XML的解析方式(DOM.SAX.StAX) 博客分类: XML   一般来说,解析XML文件存在着两种方式,一种是event-based API,比如说象SAX,XNI. 第二种是tree ...

  6. xml中俩种解析方式

    两种解析方式 1.from xml.etree import ElementTree as ET 利用ElementTree模块下的xml方法可以把一个字符串类型的东西转换成Element类,从而利用 ...

  7. XML解析——Java中XML的四种解析方式

    XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四 ...

  8. XML文件的解析方式

    XML文件4种解析方式分别是:DOM解析,SAX解析,JDOM解析,DOM4J解析.1.基础方法:DOM:与平台无关的官方的解析方式.SAX:Java平台提供的基于事件驱动的解析方式.2.扩展方法(在 ...

  9. XML有哪些解析方式有何优缺点?xml有哪些解析技术?区别是什么?

    有DOM,SAX,STAX等 (1):DOM:处理大型文件时其性能下降的非常厉害.这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XM ...

随机推荐

  1. Spring整合CXF步骤,Spring实现webService,spring整合WebService

    Spring整合CXF步骤 Spring实现webService, spring整合WebService >>>>>>>>>>>> ...

  2. 第二篇:web之前端之css

    前端之css   前端之css 本节内容 css概述及引入 css选择器 css常用属性 1.css概述及引入 CSS概述 CSS是Cascading Style Sheets的简称,中文称为层叠样式 ...

  3. css3 文本超出后出现省略号

    clip:当内联内容溢出块容器时,将溢出部分裁切掉. ellipsis:当内联内容溢出块容器时,将溢出部分替换为(...). 当块容器 <' overflow '> 为非visible时, ...

  4. 学习java随笔第十一篇:java窗体程序

    要开java的窗体程序,就要下载开发窗体的工具. 这里我用的是的myeclipse,可以直接在网上下载安装即可. 我用的是10.0版本的,如果需要汉化的话,可以看一下这篇文章:myeclipse.10 ...

  5. 从腾讯QQ升级游戏之“快速加入游戏”功能的实现缺陷看C/S之间如何正确分配相关协作

    转载:http://space.itpub.net/17007506/viewspace-615570 笔者在闲暇时,偶尔会登录腾讯QQGame玩玩升级游戏.这确实是一款非常优秀的软件作品,腾讯的开发 ...

  6. 深入理解自定义ListView

    深入理解自定义ListView ListView原理 他是一个系统的原生控件,用列表的形式来显示内容.如果内容过过有1000条左右,我们可以通过手势的上下滑动来查看数据.ListView也不是爆出OO ...

  7. 百度,人人,新浪,腾讯等分享Js代码

    <!-- Baidu Button BEGIN -->                        <div id="bdshare" class=" ...

  8. SOA,ESB 与 SCA

    SOA,ESB与 SCA SOA 与 ESB SOA(Service Oriented Architecture),面向服务体系结构,是一种组件模型架构,一种支撑软件运行的相对稳定的结构.其本质是一种 ...

  9. AngularJS cookie的使用

    Javascript使用document.cookie接口来处理简单的文本cookie,但现在大多数现代浏览器都可以使用html5 API了(sessionstorage和localstorage), ...

  10. 数据库(学习整理)----7--Oracle多表查询,三种join连接

    聚合函数:(都会忽略null数据) 常用的有5种:将字段中所有的数据聚合在一条中 .sum(字段名) :求总和 .avg(字段名) :求平均值 .max(字段名) :求最大值 .min(字段名) :求 ...