`
kenny13
  • 浏览: 44814 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

dom4j使用基本指南 (转载)

    博客分类:
  • XML
阅读更多
dom4j是一个简单的、灵活的开放源代码的库,支持XML、XPath和XSLT。与JDOM一样,dom4j也应用于Java平台。dom4j API使用了Java集合框架并完全支持DOM、SAX和JAXP。

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

dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。

dom4j API介绍

dom4j-1.6.1 API共有14个包,其中org.dom4j包中包括了表示XML文档组成部分的接口,org.dom4j.io包中包括了构建dom4j文档树的类,以及输出dom4j文档树的类。

(1)创建XML文档
在org.dom包中提供了一个DocumentHelper类,该类中多有的方法都是静态方法,其中就包括了创建XML文档各个组成部分的方法。

Document doc=DocumentHelper.createDocument();
Element eltRoot=DocumentHelper.createElement("student");
doc.setRootElement(eltRoot);

也可以先创建跟元素对象,然后在创建文档对象的同时制定根元素,如下:

Element eltRoot=DocumentHelper.createElement("student");
Document doc=DocumentHelper.createDocument(eltRoot);

(2)添加属性
在dom4j中,添加属性与JDOM一样简单,如下:

eltRoot.addAttribute("sn","01");

(3)增加子元素以及设置元素内容
在Branch接口中,定义了addElement()方法,如下:

public Element addElement(String name)

该方法用指定的name为当前节点添加一个子元素节点,并返回新节点的引用。我们使用这个方法,为根元素添加子元素,如下:

Element eltName=eltRoot.addElement("name");
Element eltAge=eltRoot.addElement("age");
eltName.setText("awang");
eltAge.setText("22");

(4)输出文档
dom4j提供了XML文档的多种输出形式。在org.dom4j.io包中,DOMWriter类可以将dom4j树输出为W3C DOM的Document对象,SAXWriter类可以将dom4j树作为SAX事件流输出,而XMLWriter类则提供了将dom4j树的各个部分以XML流的方式输出的能力。
例如,下面的代码将创建的XML文档输出到屏幕上:

XMLWriter xmlWriter=new XMLWriter();
xmlWriter.write(doc);

你也可以选择输出到文件中,如下:

XMLWriter xmlWriter=new XMLWriter(new java.io.FileWriter("student.xml"));
xmlWriter.write(doc);
xmlWriter.close();

dom4j还提供了控制文档输出格式的类org.dom4j.io.OutputFormat。利用这个类可以设置输出文档的字符编码、设置行分隔符、缩进字符串等。
下面的代码设置输出格式使用4个空格作为缩进字符串,元素之间添加新行。

OutputFormat outFmt=new OutputFormat("    ",true);
XMLWriter xmlWriter=new XMLWriter(outFmt);
xmlWriter.write(doc);

下面的代码使用美化的格式输出文档,设置字符编码为GB2312,并使用4个空格作为缩进。

OutputFormat outFmt=OutputFormat.createPrettyPrint();
outFmt.setEncoding("GB2312");
outFmt.setIndent("    ");
XMLWriter xmlWriter=new XMLWriter(outFmt);
xmlWriter.write(doc);

(5)构建dom4j树
dom4j在org.dom4j.io包中,提供了两个类:DOMReader和SAXReader,DOMReader从一个现有的W3C DOM树构建dom4j树,而SAXReader则使用SAX解析器,从不同的输入源来构建dom4j树。
以SAXReader类来构建dom4j来构建dom4j文档对象的代码如下:

SAXReader saxReader=new SAXReader();
File file=new File("student.xml");
Document doc=saxReader.read(file);

(6)访问根元素
在Document类中,给出了getRootElement()方法,用于返回文档的根元素。如下:

Element root=doc.RootElement();

(7)访问节点
要得到某个元素的所有子元素,如下:

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();
}

要删除某个元素,可以用Branch接口中定义的remove()方法,如下:

Element eltStu=root.element("student");
root.remove(eltStu);

(8)访问属性
要得到某个元素的所有属性,如下:

java.util.List sttrList=elt.attributes();

要得到指定的属性,如下:

Attribute attr=elt.attribute("sn");

要得到某个属性的值,如下:

String attrValue=elt.attributeValue("sn");

要删除某个属性,如下: elt.remove(elt.attribute("sn"));
分享到:
评论
2 楼 Marcushe 2011-03-17  
只有不使用setrootelement,或者把addProcessingInstruction放在之后,才能是xml中正确添加 xml-stylesheet的内容
1 楼 Marcushe 2011-03-17  
Dom4j,用了SetRootElement就导致addprocessingInstruction失效???
朋友,用了你的第一种方式document.setrootelement就会有问题!!

public class XmlGen {
    public Document generateDocumentByMethod() {
       Document document = DocumentHelper.createDocument();
        Element root=DocumentHelper.createElement("student");

       // ProcessingInstruction
       Map<String, String> inMap = new HashMap<String, String>();
       inMap.put("type", "text/xsl");
       inMap.put("href", "students.xsl");
       document.addProcessingInstruction("xml-stylesheet", inMap);
      
      doc.setRootElement(eltRoot);  //这是出问题的地方
     
 
       return document;
    }
public void saveDocument(Document document, File outputXml) {
       try {
           // 美化格式
           OutputFormat format = OutputFormat.createPrettyPrint();
           /*// 缩减格式
           OutputFormat format = OutputFormat.createCompactFormat();*/
           /*// 指定XML编码
            format.setEncoding("GBK");*/
           XMLWriter output = new XMLWriter(new FileWriter(outputXml), format);
           output.write(document);
           output.close();
       } catch (IOException e) {
           System.out.println(e.getMessage());
       }
    }

相关推荐

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

    在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...

    Dom4j 使用指南.rar

    **Dom4j 使用指南** Dom4j 是一个非常流行的Java库,用于处理XML文档。它提供了灵活、高效的方式来解析、创建、操作XML内容...通过阅读并实践这个“Dom4j使用指南”,开发者可以快速掌握XML处理的技能,提升开发效率。

    dom4j_dom4j1.6.1安装包_

    总之,DOM4J 1.6.1是一个功能强大且广泛使用的XML处理库,它的Maven集成使得在Java项目中使用变得方便。无论是创建XML文档、查询XML结构还是进行XML数据操作,DOM4J都能提供简洁、高效的API。在安装和使用过程中,...

    DOM4J 的使用

    DOM4J 的使用 DOM4J 是一个开源的 XML 解析包,由 dom4j.org 出品,应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM、SAX 和 JAXP。DOM4J 的主要特点是使用大量的接口,所有主要接口都在 org.dom4j 里面定义...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。...了解并掌握DOM4J的使用,对于任何涉及XML的Java开发者来说都是非常有价值的技能。

    DOM4J帮助文档及使用教程

    1. **介绍**:解释DOM4J的基本概念和设计目标,以及如何在项目中引入DOM4J库。 2. **安装与配置**:指导用户如何将DOM4J添加到Java项目中,包括Maven依赖、Gradle构建脚本或者直接添加JAR文件。 3. **基本概念**:...

    dom4j dom4j dom4j dom4j

    尽管DOM4J功能强大,但在某些特定情况下,如需要高度优化的性能或内存使用,可能需要考虑其他XML处理库,如StAX(Streaming API for XML)或VTD-XML。不过对于大多数常规XML处理任务,DOM4J已经足够胜任,并且由于其...

    dom4j_1.6.1.jar dom4j_2.1.0.jar

    这个标签直接关联了DOM4J库的核心文件,表明讨论的内容与DOM4J的使用和特性有关。 **文件名称列表:xml** 这个列表只包含了一个条目"xml",可能意味着压缩包中包含的是与XML相关的文件或资源,可能是XML示例文件、...

    dom4j基本例子

    总的来说,这个"dom4j基本例子"涵盖了DOM4J的基本操作,包括XML的解析、元素的增删改查以及使用XPath进行查询。通过学习和理解这个例子,你可以更好地掌握DOM4J库,并将其应用到自己的XML处理任务中。如果你深入研究...

    dom4j-2.1.3.zip

    "dom4j-2.1.3-javadoc.jar"文件则包含了DOM4J库的API文档,是开发者学习和使用DOM4J的重要参考资料。通过这个文件,我们可以查找类、接口、方法的详细说明,理解它们的功能和使用方式,这对于开发过程中快速定位问题...

    dom4j dom4j1.6 dom4j最新版

    通过理解并熟练使用DOM4J,开发者可以更高效地处理XML相关的任务,提高代码的可维护性和可读性。同时,由于其开源和社区活跃,DOM4J还拥有丰富的文档和社区支持,遇到问题时可以方便地找到解决方案。

    dom4j的Java工程

    首先,让我们深入了解DOM4J的基本概念。DOM4J采用了Document Object Model (DOM)接口,但它的实现更加轻量级,性能更优。DOM4J的核心类包括`Element`、`Attribute`、`Document`和`Namespace`等,它们分别代表了XML...

    dom4j使用简介

    **DOM4J使用简介** DOM4J 是一个强大的 Java 库,专为处理 XML 文档而设计。它提供了丰富的 API,使得在 Java 中解析、创建、修改 XML 文件变得简单高效。DOM4J 不仅支持 DOM(文档对象模型)和 SAX(简单API for ...

    XSD使用dom4j校验XML

    1. 加载XSD文件:使用DOM4J的DocumentHelper类的parse方法,传入XSD文件的路径,得到一个SchemaFactory对象。 ```java SchemaFactory schemaFactory = DocumentHelper.createSchema(new File("path_to_xsd_file.xsd...

    dom4j使用教程+dom4j.jar

    **DOM4J使用教程** DOM4J是一款非常优秀的Java XML API,它提供了全面而强大的功能,包括XML的解析、创建、修改以及查询等操作。在Java世界中,DOM4J因其简单易用和高效性而备受青睐。这篇教程将深入探讨DOM4J的...

    Dom4j基础使用指南

    【DOM4J基础使用指南】 DOM4J是一个强大的开源XML解析库,专为Java平台设计。它不仅提供了对DOM(文档对象模型)、SAX(简单API for XML)和JAXP(Java API for XML Processing)的支持,还融入了Java集合框架,...

    dom4j-2.0.3.zip

    DOM4J是基于DOM模型的,但相比Java内置的DOM API,DOM4J更轻量级且易于使用。它支持XPath查询,提供了丰富的事件处理机制,并且与JDOM和XOM等其他XML库有良好的互操作性。DOM4J的2.0.3版本修复了一些已知问题,提升...

    所有版本的dom4j工具包

    5. **DOM4J与JDOM兼容**:DOM4J设计时考虑到了与流行的JDOM库的兼容性,这使得已经在使用JDOM的项目更容易迁移到DOM4J。 6. **丰富的API**:DOM4J提供了一套丰富的API,使得操作XML文档如同操作Java对象一样简单。...

    dom4j 2.1.1

    在解压后的文件“dom4j”中,可能包含了DOM4J库的源码、API文档、示例代码等资源,这对于深入理解和使用DOM4J非常有帮助。通过阅读源码,可以了解其实现原理;查看API文档,可以快速找到所需功能的方法和接口;运行...

Global site tag (gtag.js) - Google Analytics