`

dom4j

 
阅读更多

dom4j

JDOM一样,也是一种用于解析XML文档的开源库.dom4j是由早期开发JDOM的人分离出来的人独立开发的.

dom4j API使用了Java集合框架并完全支持DOM,SAX,JAXP

dom4j使用接口和抽象基类,dom4jAPI相对复杂.

 

dom4j使用SAX解析器来分析XML文档.创建dom4j.此外,dom4j也可以接收DOM格式的内容,并提供从dom4j树到SAX事件流或W3CDOM树的输出机制.

 

dom4j十分优秀,许多项目都用dom4j作为XML解析器.

 

面向接口编程

引用程序主要面向Document,Element,ProcessingInstruction等接口编程,至于这些接口的底层实现,程序员无须关心.

 

dom4j实质上是以其他XML解析器为基础的,采用面向接口编程的方式将允许dom4j的底层在不同的解析机制之间自由切换.

 

支持多种解析机制

dom4j对底层原始的XML解析器进行了高度封装,正是这种封装简化了XML处理.

org.dom4j.io包下提供了如下几个类.

DOMReader:负责根据W3CDOM树创建dom4j.

SAXReader:基于SAX解析机制来解析一份XML文档,并将其转换为dom4j.

XPP3Reader:其底层需要依赖XML Pull Parser 3.x .来解析XML文档,并将其转换为dom4j.

XPPReader:基于XML Pull Parser 2.x 解析器,目前不支持注释,CDATA和处理指令.

 

 

 

dom4j常用API

采用面向接口方式来解析XML文档,开发过程中所使用的API通常都是接口.

 

Node  dom4j树中的所有节点的根接口

Branch  代表能包含子节点的节点,Branch接口下有两个子接口:ElementDocument.

Element  代表XML元素

Document  代表XML文档

Attribute  代表XML元素属性

DocumentType  代表XML里的DOCTYPE.

ProcessingInstruction  代表XML文档里的处理指令.

CharacterData  所有文本元素的父接口,CDATA ,Text,Comment三个子接口.

CDATA  代表XML里的CDATA.

Text  代表XML里的文本内容

Comment  代表XML文档里的注释内容.

 

输出

DOMWriter:负责将dom4j树转换为W3CDOM.

SAXWriter:该输出工具类负责将dom4j树输出给SAXContentHandler处理.

XMLWriter:dom4j树转换成对应的XML文档,并可输出到指定输出流中.

 

创建新的Document

DocumentFactory:提供一个createDocument()方法用于创建Document对象.

DocumentHelper: 创建XML文档各个组成部分,该类的所有方法都是静态方法.

 

创建XML文档

org.dom包中提供了DocumentHelper.

Document doc=DocumentHelper.createDocument();

Element eltRoot=DocumentHelper.createElement(“student”);

doc.setRootElement(eltRoot);

也可以先创建根元素对象,然后创建文档对象的同时指定根元素.

Element eltRoot=DocumentHelper.createElement(“student”);

Document doc=DocumentHelper.createDocument(eltRoot);

 

添加属性

eltRoot.addAttribute(“sn”,”10”);

 

添加子元素以及设置元素内容

Branch接口中,定义了addElement()方法.

public Element addElement(String name)

 

该方法用指定的name为当前节点添加一个字元素节点,并返回新节点的引用.

:添加两个子元素.

Element eltName=eltRoot.addElement(“name”)  //创建元素,子元素.

Element eltAge=elt.addElement(“age”)  //创建元素,子元素.

 

eltName.setText(“剑圣”);  //给元素添加内容.

eltAge.setText(“128”);  //给元素添加内容.

 

输出文档

org.dom4j.io

DOMWrite类可以将dom4j树输出为W3C Document对象.

SAXWrite类可以将dom4j树作为SAX事件流输出.

XMLWrite类则提供了将dom4j树的各个部分以XML流的方式输出的能力.

 

将创建的XML文档输出到控制台:

XMLWriter xmlWriter=new XMLWriter();

xmlWriter.writer(doc);

将创建的XML文档输出到文件:

XMLWriter xmlWriter=new XMLWriter(new java.io.FileOutputStream(“student.xml”));

xmlWriter.writer(doc);

也可以使用java.io.Writer对象

XMLWriter xmlWriter=new XMLWriter(new java.io.FileWriter (“student.xml”));

xmlWriter.writer(doc);

xmlWriter.close();

 

注意如果不采用java.io.Writer 对象构建的XMLWriter对象,其底层代码设置了自动刷新,也就是说,对缓冲的输出,一旦调用了XMLWriter对象的writer()方法,将会自动刷新.

而对java.io.Writer对象构建XMLWriter对象,则没有设置自动刷新,所以在调用writer()方法后,需要调用xmlWriter.close(); 或者xmlWriter.flush();

注意XMLWriter继承自org.xml.sax.helpers.XMLFilterImpl,而不是从java.io.Writer类派生而来,它所提供的flush() close() 方法只是内部java.io.Writer对象的flush() close()方法的包装.

 

格式

控制文档输出格式的类

org.dom4j.io.OutputFormat  用于设置输出文档字符编码,设置行分隔符及控制使用的缩进字符串等.

 

:设置输出4个空格作为缩进字符串,元素之间添加新行

OutputFormat outFmt=new OutputFormat(“    ”,true);

XMLWriter xmlWriter=new XMLWriter(outFmt);

xmlWriter.writer(doc);

 

 

:美化的格式输出文档,设置GB2312,并用4个空格作为缩进.

OutputFormat outFmt=OutputFormat.createPrettyPrint();

outFmt.setEncoding(“GB2312”);

outFmt.setIndent (“    ”);

XMLWriter xmlWriter=new XMLWriter(outFmt);

xmlWriter.writer(doc);

 

 

构建dom4j

org.dom4j.io.

DOMReader:负责根据W3CDOM树创建dom4j.

SAXReader:基于SAX解析机制来解析一份XML文档,并从不同的输入源来构造dom4j.

SAXReader类来构造dom4j文档对象:

SAXReader saxReader=new SAXReader();

File file=new File(“student.xml”);

Document doc=saxReader.read(file);

 

DOMReader类来构造dom4j文档对象:

DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstanc(); 

DocumentBuilder db= dbf.new DocumentBuilder();

File file=new File(“student.xml”);

org.w3c.Document document=db.parse(file);

DOMReader domReader=new DOMReader();

org.dom4j.Document doc= domReader.read(document);   //W3C DOM document转成dom4j

 

访问根元素

Document,getRootElement()方法,用于返回文档下的根元素.

Element root=doc.getRootElement();

 

访问节点

要得到某个元素的所有子元素.

java.util.List childrenList=elt. elements();  //

 

要得到某个元素的指定名称的子元素

java.util.List childrenList= elt. elements(“student”);  //

 

要得到某个元素的指定名称的第一个子元素

Element eltChild= elt. element(“student”);  //

 

迭代所有子元素

for(java.util.Iterator it=root.elementIterator();it.hasNext();){

Element element=(Element)it.next();

……

}

 

 

XPath

dom4j中集成了XPath的支持.选择节点时,可以直接使用XPath表达式.

为了能够编译执行XPath表达式.需要配置dom4j中自带的jaxen. jaxen包是一个用Java开发的开源XPath引擎,用于配置各种基于XML的对象模型,DOM,XOM,dom4j,JDOM.

 

:

得到student.xml中所有的<name>元素

java.util.List l= root. selectNodes(“//name”);  //

选择属性sn=01<student>元素

java.util.List l= root. selectNodes(“//student[@sn=’01’]”);  //

 

 

删除元素

要删除某个元素,使用Branch接口中定义的remove()方法.

Element eltStu=root.element(“student”);

root.remove (eltStu);  //

 

访问属性

要得到某个元素的所有属性

java.util.List attrList=elt. attributes();  //

要得到指定的属性

Attribute attr=elt. attribute(“sn”);  //

要得到指定的属性值

String attrValue=elt. attributeValue(“sn”);  //

要删除某个属性

elt. remove(elt. attributeValue(“sn”));  //

 

使用DTD验证

 

使用XML Schema验证

 

 

分享到:
评论

相关推荐

    dom4j dom4j dom4j dom4j

    dom4j dom4j dom4j dom4j dom4j dom4j

    dom4j-2.1.1-API文档-中英对照版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    dom4j-2.1.1-API文档-中文版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    DOM4J jar包 所有的包 xml解析 dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1 导入直接使用

    JavaEE源代码 dom4j-1.6.1

    JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源...

    资源jar包dom4j-1.6.1.rar

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...

    Dom4j_使用简介

    Dom4j_使用简介DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java ...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    dom4j-1.6.1.zip与 dom4j-2.0.0-ALPHA-2.jar

    dom4j_dom4j1.6.1安装包_

    maven dom4j 1.6.1安装包

    dom4j常用方法

    dom4j常用方法 i.SAXReader sr = new SAXReader(); 生成解析器对象 ii.解析器对象.read(file对象); 解析文件生成Document对象 iii.文档对象.getRootElement() 获取跟元素节点 iv.元素节点.elements() 获取到指定...

    Dom4j 1.6.1 JAVA API

    dom4j帮助文档 官方API All Classes Packages org.dom4j org.dom4j.bean org.dom4j.datatype org.dom4j.dom org.dom4j.dtd org.dom4j.io org.dom4j.jaxb org.dom4j.rule org.dom4j.rule.pattern org.dom...

    dom4j-1.6.1.jar (dom4j) 欢迎下载

    dom4j-1.6.1.jar,Dom4j是一个Java的XML API接口,是jdom的进化版,dom4j基本用来读写xml文件,是一个十分优秀的JavaXML API接口

    dom4j api 参考手册

    org.dom4j.io Provides input and output via SAX and DOM together with writing dom4j objects to streams as XML text. org.dom4j.jaxb org.dom4j.rule A Pattern based XML rule engine which implements the ...

    dom4j框架解析教程

    dom4j技术教程,dom4j是一个很好的解析xml文档的框架

    dom4j-1.6.1-7

    dom4j,用来处理xml

    DOM4J帮助文档及使用教程

    这个压缩包是一个关于DOM4J的压缩包,里面包含了DOM4J的帮助文档,DOM4J的使用教程,以及DOM4J这个JAVA包。保证这个压缩包是网上面最全的有关DOM4J的文档。

    Dom4j常用jar包

    Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包

    DOM4j属性的详细介绍及相关的例子

    介绍DOM4J的主要接口的使用方法,Elementorg.dom4j.Attribute : Attribute接口定义了XML文件的属性 org.dom4j.Branch:Branch为能够包含子节点的节点如XML元素和文档定义了一个公共为 org.dom4j.CDATA : CDATA定义了...

    Dom4j解析XML文档.doc

    Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc

    DOM4J的jar包和API

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

Global site tag (gtag.js) - Google Analytics