dom4j

dom4j与XML文档操作

不问归期 提交于 2019-11-28 13:23:37
dom4简介 1、 DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。    DOM4J 最大的特色是使用大量的接口。它的主要接口都在org.dom4j里面定义 Attribute 定义了 XML 的属性。 Branch 指能够包含子节点的节点。如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为 CDATA 定义了 XML CDATA 区域 CharacterData 是一个标识接口,标识基于字符的节点。如CDATA,Comment, Text. Comment 定义了 XML 注释的行为 Document 定义了XML 文档 DocumentType 定义 XML DOCTYPE 声明 Element 定义XML 元素 ElementHandler 定义了Element 对象的处理器 ElementPath 被 ElementHandler 使用,用于取得当前正在处理的路径层次信息 Entity 定义 XML entity Node 为dom4j中所有的XML节点定义了多态行为 NodeFilter 定义了在dom4j 节点中产生的一个滤镜或谓词的行为(predicate) ProcessingInstruction 定义 XML

sax/dom/jdom/dom4j的区别

雨燕双飞 提交于 2019-11-28 09:22:33
网上能够查到很多的4种解析方式的区别,我再做一下摘录和总结,顺带给自己做个备份。 SAX sax分析器在对xml文档进行分析时,触发一系列的事件,应用程序通过事件处理函数实现对xml文档的访问. 因为事件触发是有时序性的,所以sax分析器提供的是一种对xml文档的顺序访问机制,对于已经分析过的部分, 不能再重新倒回去处理.此外,它也不能同时访问处理2个tag. sax分析器在实现时,只是顺序地检查xml文档中的字节流,判断当前字节是xml语法中的哪一部分,检查是否符合 xml语法并且触发相应的事件.对于事件处理函数的本身,要由应用程序自己来实现. SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。 同DOM分析器相比,sax分析器对xml文档的处理缺乏灵活性,但对于只访问xml文档中的数据而不改变应用程序 来说,sax分析器的效率会很高. sax对内存要求也比较低. 优点:1、无需将整个文档加载到内存中,所以内存消耗少. 2 、推模型允许注册多个contentHandler. 缺点:1、没有内置的文档导航支持. 2、不能随机访问xml文档. 3、不支持原地修改xml. 4、不支持名字空间作用域. 适合:对xml文档读取数据 DOM

反射和XML

与世无争的帅哥 提交于 2019-11-28 06:23:54
反射和XML 回顾: 1 NIO简介 Java Non-blocking IO New IO 2 和传统IO (1) 面向流 ,面向缓冲区 (2) 阻塞, 非阻塞 (3) 无 选择器(selector) 3 NIO Buffer:ByteBuffer CharBuffer Channel:FileChannel、ServerSocketChannel 、SocketChannel Selector:选择器、轮询器 4 Buffer ByteBuffer CharBuffer ShortBuffer .... 重要属性 0<=mark<=postion<=limit<=capacity put();//放入数据 get();//获取数据 flip();//切换为读模式 rewind()//可以重复 mark();//做标记 reset();//返回上一个标记 clear()//清空, compact();//清空,会保留未读取的数据 间接缓冲区: 堆中,空间不大,速度慢,jvm可以回收 直接缓冲区: 物理内存(虚拟内存)中,空间大,速度块,jvm不能回收。 5 Channel FileChannel InputStream OutputStream RandomAcceFile的getChannle(); FileChannel.open(); ServerSocketChannel

Java SE练习 - 对dom4j解析、反射的综合练习

好久不见. 提交于 2019-11-28 03:23:53
原 Java SE练习 - 对dom4j解析、反射的综合练习 2017年12月13日 14:41:07 都说名字长不会被发现 阅读数 138 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/m0_37602117/article/details/78791742 前言:对dom4j、反射使用的一个综合练习。 一、编写XML文件 <?xml version="1.0" encoding="UTF-8"?> <beans> <student className="cn.itcast.javaeevideoday02.Student"> <name>张三</name> <age>18</age> <sex>男</sex> </student> <student className="cn.itcast.javaeevideoday02.Student"> <name>李四</name> <age>20</age> <sex>男</sex> </student> <student className="cn.itcast.javaeevideoday02.Student"> <name>王五</name> <age>22</age> <sex>男</sex> </student

Caused by: java.lang.ClassNotFoundException: org.dom4j.io.STAXEventReader

大城市里の小女人 提交于 2019-11-27 15:53:47
I am developing a web service application but sessionFactory bean is not creating because of below error. I can't see duplicate or conflict version of dom4j jar. I tried various times to referesh/clean server and project in eclipse. Hibernate version 5.1.0.Final Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring-database.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/dom4j/io/STAXEventReader at org.springframework.beans.factory

JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较

﹥>﹥吖頭↗ 提交于 2019-11-27 06:39:04
JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较 1.各种方式的详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的 官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找 特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下 导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 2)SAX SAX处理的优点非常类似于流 媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数 据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比 它的替代者DOM快许多。 选择DOM还是选择SAX? 对于需要自己编写代码来处理XML文档的开发人员来说, 选择DOM还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。

使用DOM4J操作XML文件

半城伤御伤魂 提交于 2019-11-27 04:19:23
1. Dom4j 介绍 Dom4j是开放源代码的解析XML文件的框架,它拥有本地的XPath支持,但是不支持使用XPath选择节点 虽然 DOM4J 代表了完全独立的开发结果,但最初,它是JDOM 的一种智能分支。 它合并了许多超出基本 XML文档表示的功能,包括集成的 XPath支持、XML Schema 支持 以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过 DOM4J API 和标准 DOM 接口具有并行访问功能。 从2000下半年开始,它就一直处于开发 之中。 为支持所有这些功能,DOM4J 使用接口和抽象基本类方法。DOM4J 大量使用了 API 中的 Collections 类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直 接的编码方法。 直接好处是,虽然 DOM4J 付出了更复杂的 API 的代价,但是它提供了比JDOM 大得多的灵活性。 在添加灵活性、XPath 集成和对大文档处理的目标时,DOM4J 的目标与 JDOM 是一样 的:针对 Java 开发者的易用性和直观操作。它还致力于成为比 JDOM 更完整的解决方案, 实现在本质上处理所有Java/XML问题的目标。在完成该目标时, 它比JDOM 更少强调防止 不正确的应用程序行为。 DOM4J 是一个非常非常优秀的Java XML API,具有性能优异

dom4j读写xml文件示例

血红的双手。 提交于 2019-11-27 04:19:00
dom4j读写xml文件 首先我们给出一段示例程序: import java.io.File; import java.io.FileWriter; import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class DOM4JTest { /** */ /** */ /** */ /** */ /** */ /** */ /** */ /** * DOM4J 读写 XML 示例 * * @param args * @throws Exception */ public static void main(String[] args) { try { XMLWriter writer = null ; // 声明写 XML 的对象 SAXReader reader = new SAXReader(); OutputFormat format = OutputFormat.createPrettyPrint();

What Java XML library do you recommend (to replace dom4j)? [closed]

扶醉桌前 提交于 2019-11-26 10:14:56
I'm looking for something like dom4j, but without dom4j's warts, such as bad or missing documentation and seemingly stalled development status. Background: I've been using and advocating dom4j, but don't feel completely right about it because I know the library is far from optimal (example: see how methods in XSLT related Stylesheet class are documented; what would you pass to run() as the String mode parameter?) Requirements: The library should make basic XML handling easier than it is when using pure JDK ( javax.xml and org.w3c.dom packages). Things like this: Read an XML document (from file

XPath contains(text(),&#39;some string&#39;) doesn&#39;t work when used with node with more than one Text subnode

此生再无相见时 提交于 2019-11-26 01:38:33
问题 I have a small problem with Xpath contains with dom4j ... Lets say my XML is <Home> <Addr> <Street>ABC</Street> <Number>5</Number> <Comment>BLAH BLAH BLAH <br/><br/>ABC</Comment> </Addr> </Home> Lets say I want to find all the nodes that have ABC in the text given the root Element... So the xpath that i would needed to write would be //*[contains(text(),\'ABC\')] However this is not what Dom4j returns .... is this a dom4j problem or my understanding how xpath works. since that query returns