DOM4J熟知

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 什么是解析xml   系统最终会从xml中读取数据. 读取的过程就是解析.CRUD ==> 增删改查 ==> create read update delete ==> 解析指的就是读.什么是解析器   就是用来解析xml的类.

什么是解析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);

目录
相关文章
|
11月前
|
XML 移动开发 JavaScript
DOM编程基础
DOM编程基础
67 0
|
2月前
|
JavaScript 算法 前端开发
"揭秘虚拟DOM的神奇魔法:从零开始打造高效渲染引擎,颠覆你的DOM操作认知!"
【8月更文挑战第20天】虚拟DOM是一种优化技术,通过在内存中构建DOM树的轻量级副本,减少浏览器重排和重绘,提升性能。本文简要介绍了DOM及其重要性,并深入解释了虚拟DOM的概念。虚拟DOM通过模拟真实DOM结构,在内存中进行数据更新,仅将变动部分同步到实际DOM。文中还提供了一个简易虚拟DOM的实现方案,包括虚拟节点创建、渲染函数及一个基本的diff算法,用于比对新旧虚拟DOM并高效更新实际DOM。通过示例展示了如何构建和渲染一个简单的虚拟DOM。这有助于理解虚拟DOM的基本工作原理和技术细节。
45 4
|
5月前
|
JavaScript 前端开发 算法
深入理解虚拟DOM:原理、优势与实践
深入理解虚拟DOM:原理、优势与实践
270 0
|
5月前
|
XML JavaScript 前端开发
深入理解虚拟 DOM:提升前端性能的关键技术
深入理解虚拟 DOM:提升前端性能的关键技术
深入理解虚拟 DOM:提升前端性能的关键技术
|
5月前
|
JavaScript 前端开发 算法
JavaScript 前端框架相关:谈谈你对虚拟DOM的理解。
JavaScript 前端框架相关:谈谈你对虚拟DOM的理解。
73 0
|
5月前
|
JavaScript 前端开发
浅谈虚拟DOM:前端开发的神奇利器
浅谈虚拟DOM:前端开发的神奇利器
|
11月前
|
JavaScript 前端开发 索引
DOM 编程
DOM 编程
|
JavaScript 前端开发 UED
终于搞懂虚拟Dom啦!
终于搞懂虚拟Dom啦!
109 0
|
JavaScript 前端开发 API
重学前端 23 # 狭义的文档对象DOM
重学前端 23 # 狭义的文档对象DOM
68 0
重学前端 23 # 狭义的文档对象DOM
|
JavaScript 前端开发 Go
【SolidJs】仅次于原生JS的超级性能!SolidJs框架教程【上】(1)
背景 今天被战友种草了一款前端框架,打开链接看文章,在各个指标的比较下,SolidJs脱颖而出,下面简单介绍一下这个框架,然后开始记录一下学习笔记。(Golang的事情暂时放一放,毕竟咱是专业前端「手动狗头」)。
457 0