(文字部分引用何处忘了。。。。)

JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。

JDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(尽管它还可以将以前构造的DOM表示作为输入)。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。JDOM是在Apache许可证变体下发布的开放源码。

 DOM4j是JDOM的一个分支

合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能

为支持所有这些功能,DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然DOM4J付出了更复杂的API的代价,但是它提供了比JDOM大得多的灵活性

对比

1)DOM4J性能最好,如果不考虑可移植性,那就采用DOM4J.

2)JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM.,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在JavaScript中使用DOM)。

3)SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。

<pre name="code" class="java">package com.cskaoyan.dom4j;
import java.io.FileOutputStream;
import java.io.FileWriter;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4jDeom {public static void main(String[] args) throws Exception{/* SAXReader reader= new SAXReader();Document document= reader.read("src/books.xml");//读取xml并获得documentElement root= document.getRootElement();//根节点Element book1= (Element)root.elements().get(1);//对应结点Element price= (Element)book1.element("author");System.out.println(price.getText());book1.remove(price);//删除 需要回写OutputFormat format= OutputFormat.createPrettyPrint();//指定格式  这是英文有中文的原因format.setEncoding("utf-8");XMLWriter writer= new XMLWriter(new FileOutputStream("src/books.xml"),format);   writer.write(document); writer.close(); //回写 *///     SAXReader reader = new SAXReader();
//      Document document = reader.read("src/books.xml");
//      Element root = document.getRootElement();
//      Element book1 =   (Element) root.elements().get(1);
//      Element author =  book1.addElement("author");
//      author.setText("李开复"); //添加 需要回写
//
//      OutputFormat format= OutputFormat.createPrettyPrint();
//      format.setEncoding("utf-8");
//      XMLWriter writer= new XMLWriter(new FileOutputStream("src/books.xml"),format);
//      writer.write(document);
//      writer.close();SAXReader reader = new SAXReader();Document document = reader.read("src/books.xml");Element root = document.getRootElement();Element book1 =   (Element) root.elements().get(0);Element author =   (Element) book1.element("author");author.setText("李开复");OutputFormat format = OutputFormat.createPrettyPrint();// 指定XML编码                   format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(new FileOutputStream ("src/books.xml"),format);writer.write(document); writer.close();}    }

[xml]DOM4j解析相关推荐

  1. java xml dom4j 解析_Java使用DOM4J解析XML

    Dom4J方式解析XML文件.dom4j是非官方提供的xml文件解析方式,因此需要去第三方下载dom4j的jar包 File file = new File("D:\\chengmuzhe\ ...

  2. java xml dom4j 解析_在JAVA中怎么用DOM和DOM4j解析XML啊?

    二.XML文件 三.开始解析 public class JDOMTest { public static void main(String[] args) { // 进行对books.xml文件的JD ...

  3. springboot dom4j 解析xml

    pom.xml <!-- dom4j 解析xml用到 --><dependency><groupId>dom4j</groupId><artifa ...

  4. --Dom4j解析xml--

    Dom4j解析xml 标签(空格分隔):解析xml test.xml <?xml version="1.0" encoding="UTF-8"?> ...

  5. JAVA中xml文件解析几种方式

    1. DOM解析xml /*** DOM解析xml* @param xmlPath xml文件路径*/public static void getInfoByDom(String xmlPath){D ...

  6. 使用dom4j解析XML例子

    包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), TestDom4jReadExmple.java(测试解析的结果) 代 ...

  7. 【学习笔记】关于DOM4J:使用DOM4J解析XML文档

    一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org. ...

  8. Dom4j 解析Xml文档及XPath查询 学习笔记

    本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" -- 在当前浏览器页面,按键 "Ctrl+F" 按键 ...

  9. DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)...

    Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM开发的.与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了 ...

最新文章

  1. 【BZOJ3926】[Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机
  2. 00asp.net_js前后台代码互访
  3. python处理csv文件 sql_如何用python将csv文件写入sql数据库
  4. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...
  5. Jupyter进阶教程
  6. 循环给对象创建属性名和属性值
  7. leetcode80. 删除排序数组中的重复项 II
  8. 客服系统微服务架构的演化
  9. backbone, AngularJS, EmberJS 简单比较
  10. JetBrains正式发布GoLand
  11. java.io.tmpdir
  12. 最新emoji表情代码大全_在 Markdown 中使用表情符号
  13. 如何绕过mac地址过滤_如何通过路由器来过滤无线MAC地址
  14. 惯性系统常用坐标系_惯性技术常用坐标系
  15. Win10/edge主页被360,hao123篡改主页问题解决办法2022
  16. windows11右键一直转圈问题解决方法
  17. CleanMyMac2023免费版系统清理优化工具
  18. 语音端点matlab,语音端点检测及其在Matlab中的实现
  19. 腾讯视频和优酷视频怎么嵌入网页的方法
  20. 术业有专攻,数据库的 dba

热门文章

  1. 2021-07-08~2021-07-22总结--zhengjun
  2. 【建议收藏】数据结构和算法面试题
  3. 微信小程序上下滑动卡顿 z-index设置不起作用
  4. excel求方差和标准差的函数_Excel标准差_计算函数Stdev和StdevP的使用方法
  5. 引路蜂技术博客论坛开放
  6. linux网卡 命令 ncmil,Linux常用性能检测命令解释
  7. 零基础学黑客攻防 :实现简单的QQ/邮件黑客攻击,注册表/系统安全防护,黑客零基础入门最佳教程
  8. 自制F1C200S demo板(六、裸机寄存器点灯)
  9. 如何自己制作简历模板?简历在线制作的方法介绍
  10. sublime 下 解决Vintage模式下,normal 模式下中文输入的问题。