zoukankan      html  css  js  c++  java
  • DOM4J熟知

    什么是解析xml
      系统最终会从xml中读取数据. 读取的过程就是解析.

    CRUD ==> 增删改查 ==> create read update delete ==> 解析指的就是读.

    什么是解析器
      就是用来解析xml的类.
      过滤器,拦截器,监听器.... 都是具备相应功能的java类而已.

    两个常见的解析xml的思路
    思想
      DOM 将文档中所有内容都封装成对象. 读取时,将所有对象都加载到内存中. 在内存中创建一颗dom树(记录对象间的关系).
    优点  方便的进行增删改查.
    缺点  会非常消耗内存.

      SAX 事件驱动的. 与pull解析类似.把xml文档的读取过程,划分出5类事件.我们只要提供遇到每类事件做什么的锦囊即可.
    优点  内存占用小.
    缺点  不能进行增删改的操作.

    DOM 解析是由w3c推荐提出的.
    SAX  解析是由民间提出的.

    DOM 把所有内容封装成了5类对象.
      document  Element  Attribute  Text  Commons
    共同的父类
    node
      Node的属性 自身属性 nodeType  nodeName  nodeValue
      导航属性
        找子节点的:firstChild   lastChild   childNodes
        找父节点的:parentNode
        找兄弟节点:nextSibling   previousSibling

    获得Element的方式
      getElementById ==> Document
      getELementsByTagName ==> Document/Element
      getELementsByClassName ==> Document/Element
      getElementsByName ==> Document

    对于增删改的操作:
      创建一个元素: document.createElement
      添加一个元素: element.appendChild ,element.insertBefore
      替换一个元素: element.replaceChild
      删除一个元素: element.removeChild

    JAXP ==> JDK提供的 ==> java api for xml parser
    思想在java中的体现是接口. 我们要开发的话需要接口的实现类.由各大解析器厂商提供实现接口的类.

    A a = new AImpl();   //Aimpl2;
    A a = new AImpl2();
    上面的切换实现类的方式,需要该源代码,太过原始
    A a = JAXP.getXXX();  ==> 配置文件   ==> 我们通过修改配置文件就可以实现切换实现类.
    反射.泛型.

    DOM4J ==> 框架 ==>
    Dom for java
    DOM4J 整合两种思想.(SAX DOM)的思想. 使用sax的思想做读取xml. 又参照dom的思想,也在内存中创建了一颗对象关系树. 

    用dom4j如何避免乱码

    要保证写入的编码和读取的编码一致
      1.写入的编码如何控制?
      XMLWriter writer = new XMLWriter(new PrintWriter("src/str.xml","UTF-8"),format);
      2.读取的编码如何控制?
      <?xml version="1.0" encoding="GBK"?>,其中encoding属性决定了读取时采用什么编码,而encoding属性由format.setEncoding("GBK");控制.

    //其实要保证不乱码上面的方法太弱了!
    方法  使用字节流绝对不会出现乱码! 如下
      XMLWriter writer = new XMLWriter(new FileOutputStream("src/str.xml"),format);

  • 相关阅读:
    SDUT 2143 图结构练习——最短路径 SPFA模板,方便以后用。。 Anti
    SDUT ACM 1002 Biorhythms 中国剩余定理 Anti
    nyist OJ 119 士兵杀敌(三) RMQ问题 Anti
    SDUT ACM 2157 Greatest Number Anti
    SDUT ACM 2622 最短路径 二维SPFA启蒙题。。 Anti
    二叉索引树 区间信息的维护与查询 Anti
    SDUT ACM 2600 子节点计数 Anti
    UVA 1428 Ping pong 二叉索引树标准用法 Anti
    2010圣诞Google首页效果
    Object
  • 原文地址:https://www.cnblogs.com/hanwen1014/p/6775681.html
Copyright © 2011-2022 走看看