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);
DOM4J熟知的更多相关文章
- XML技术之DOM4J解析器
由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...
- 四种解析和创建方式(DOM,SAX,DOM4J,JDOM)
一.先导入jar包 DOM基于树形,SAX基于事件,DOM4J和JDOM基于底层API 二.代码如下 1 package com.sxt.test; import java.io.File; impo ...
- dom4j的小例子
1.要解析的xml文件book.xml <?xml version="1.0" encoding="UTF-8"?> <books> & ...
- Dom4J解析技术
前面的话 本文主要讲解有关Dom4j技术和xpath配合下的优化! 目录: 为什么需要Dom4J DOM4J怎么用 xpath怎么配合DOM4J 一 为什么需要Dom4J 一 ...
- Dom4j解析xml文件
dom4j是一个Java的XML API,类似于jdom,用来读取的XML文件,由于它是将文件解析完存放在内存当中的,所以不适合解析大的XML文件,但就方便性和性能方面,一定程度要优于JDK中Domc ...
- java dom4j封装和解析XML
package org.scbit.lsbi.scp.utils; import java.util.ArrayList; import java.util.List; import org.dom4 ...
- xml之dom4j解析
* 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...
- 使用dom4j读取xml连接数据库与之单例模式
使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...
- dom4j解析示例
收藏信息.xml <?xml version="1.0" encoding="GB2312" standalone="no"?> ...
随机推荐
- ISLR系列:(4.1)模型选择 Subset Selection
Linear Model Selection and Regularization 此博文是 An Introduction to Statistical Learning with Applicat ...
- css3学习之旅-css的基本语法(1)
后面就将要介绍css的全面语法: 1.css介绍 2.css基本语法 3.css高级语法 4.css派生选择器 5.css的id选择器 6.css类选择器 7.css属性选择器 !!!!!css介绍 ...
- Android官方技术文档翻译——IntelliJ 项目迁移
本文译自Android官方技术文档<Migrating from IntelliJ Projects>,原文地址:http://tools.android.com/tech-docs/ne ...
- LM**项目开发感悟
LM**项目开发感悟 经过一个多月的项目开发,自己主要负责服务端业务逻辑的实现.服务端采用纯servlet完成,自己是在已有的项目架构上进行编程,对于所使用的架构,自己还没有认真的研究过,但明白其用到 ...
- Java进阶(十七)ArrayList与LinkedList的区别
ArrayList与LinkedList的区别 ArrayList ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayLis ...
- Android开发技巧——自定义单选或多选的ListView
这篇其实应该是属于写自定义单选或多选的ListView的基础教程,无奈目前许多人对此的实现大多都绕了远路,反而使得这正规的写法倒显得有些技巧性了. 本文原创,转载请注明在CSDN上的出处: http: ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...
- 关于masm中OFFSET伪指令对结构的影响
在masm中,如果offset修饰全局变量,则他返回的是变量的相对于其所在段的偏移,并且offset不能修饰局部变量哦. 若offset修饰的是文字常量则将被忽略: VAL = 1000h mov e ...
- coco2dx添加类报错
最近刚开始学习2dx,用的vs编辑器,现在说说我使用时碰到的一点小问题: 我使用的类添加向导,但是添加的类在win32目录下,而且编译的时候总是提示找不到 .h 文件 其实,这样添加类不是很好,可以在 ...
- Spring Kafka和Spring Boot整合实现消息发送与消费简单案例
本文主要分享下Spring Boot和Spring Kafka如何配置整合,实现发送和接收来自Spring Kafka的消息. 先前我已经分享了Kafka的基本介绍与集群环境搭建方法.关于Kafka的 ...