`

Dom4j简单应用

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


使用:Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。

使用Dom4j开发,需下载dom4j相应的jar文件。


l 具体应用:

a. DOM4j中,获得Document对象的方式有三种:


1.读取XML文件,获得document对象           

                   SAXReader reader = new SAXReader();
              Document   document = reader.read(new File("input.xml"));


2.解析XML形式的文本,得到document对象.

                   String text = "<members></members>";
              Document document = DocumentHelper.parseText(text);


3.主动创建document对象.

                  Document document = DocumentHelper.createDocument();
             //创建根节点

                  Element root = document.addElement("members");


b. Tip:节点对象

Element root = document.getRootElement();

c. 取得某个节点的子节点.

Element element=root.element(“书名");

d. 取得节点的文字

String element=node.getText();

e. 取得某节点下所有名为“member”的子节点,并进行遍历.

List nodes = rootElm.elements("member");

  for (Iterator it = nodes.iterator(); it.hasNext();) {
     Element elm = (Element) it.next();
    // do something
}


f. 对某节点下的所有子节点进行遍历.

for(Iterator it=root.elementIterator();it.hasNext();){
       Element element = (Element) it.next();
       // do something
    }


例如:

@Test

public void Test1() throws Exception {

// 创建读取器

SAXReader sr = new SAXReader();

Document doc = sr.read(new File("src\\student.xml"));

Element el = doc.getRootElement();

disPlayElement(el);

}


private void disPlayElement(Element el) {

disPlayAttribute(el);

for (Iterator<Element> it = el.elementIterator(); it.hasNext();) {

Element elem = it.next();

disPlayAttribute(elem);

if (elem.isTextOnly()) {

System.out.println(elem.getTextTrim());

} else {

disPlayElement(elem);

}


}


}


private void disPlayAttribute(Element el) {

for (Iterator<Attribute> it = el.attributeIterator(); it.hasNext();) {

Attribute att = it.next();

System.out.println(att.getValue());

}


}



g. 在某节点下添加子节点.

Element ageElm = newMemberElm.addElement("age");

h. 在某节点下添加子节点.

element.setText("29");

i. 删除某节点.
//childElm是待删除的节点,parentElm是其父节点

parentElm.remove(childElm);

j. 添加一个CDATA节点.
Element contentElm = infoElm.addElement("content");
contentElm.addCDATA(diary.getContent());

例如:

修改
@Test

public void Test3() throws Exception {

SAXReader sr = new SAXReader();

Document doc = sr.read("src\\student.xml");

sr.setStripWhitespaceText(true);

Element students = doc.getRootElement();

Element studen = students.addElement("student");

Element name = studen.addElement("name");

name.setText("测试");

List<Element> list = students.elements();

Element students_2 = list.get(0);

Element name_2 = (Element) students_2.elements().get(0);

name_2.setText("测试2");

OutputFormat format = new OutputFormat("   ", true, "utf-8");

XMLWriter xw = new XMLWriter(new FileWriter("src\\student2.xml"),

format);

xw.write(doc);

xw.close();

}

删除

// 删除xml信息

@Test

public void Test4() throws Exception {

SAXReader sr=new SAXReader();

Document doc=sr.read(new File("src\\student.xml"));

Element studentRoot =doc.getRootElement();

Element student=studentRoot.element("student");

Element name=student.element("name");

//删除时用父节点删除子节点

student.remove(name);

OutputFormat format = new OutputFormat("   ", true, "utf-8");

XMLWriter xw = new XMLWriter(new FileWriter("src\\student4.xml"),

format);

xw.write(doc);

xw.close();

}


l Tip:将文档写入XML文件.

1.文档中全为英文,不设置编码,直接写入的形式.
  XMLWriter writer = new XMLWriter(new  FileWriter("output.xml"));
  writer.write(document);
  writer.close();


2.文档中含有中文,设置编码格式写入的形式.
OutputFormat format = OutputFormat.createPrettyPrint();
// 指定XML编码                  

     format.setEncoding("GBK");      
XMLWriter writer = new XMLWriter(newFileWriter("output.xml"),format);
writer.write(document);
writer.close();

例如:

@Test

public void Test2() throws Exception {

Document doc = DocumentHelper.createDocument();

Element students = doc.addElement("Students");

Element student = students.addElement("student");

Element name = student.addElement("name");

name.addText("朱磊");

Element age = student.addElement("age");

age.addText("22");

Element sex = student.addElement("sex");

sex.addText("男");

Element email = student.addElement("email");

email.addText("zhuleishitou@sina.com");

Element address = student.addElement("addRess");

address.addText("保定软件");

OutputFormat format = new OutputFormat("      ", true, "utf-8");

XMLWriter xw = new XMLWriter(new FileWriter("src\\student1.xml"),

format);

xw.write(doc);

xw.close();

}


l Dom4j在指定位置插入节点

1.得到插入位置的节点列表(list)

2.调用list.add(index,elemnent),由index决定element的插入位置。

Element元素可以通过DocumentHelper对象得到。示例代码:


Element aaa = DocumentHelper.createElement("aaa");

aaa.setText("aaa");


List list = root.element("书").elements();

list.add(1, aaa);


//更新document

例如:

@Test

public void Test3() throws Exception {

SAXReader sr = new SAXReader();

Document doc = sr.read("src\\student.xml");

sr.setStripWhitespaceText(true);

Element students = doc.getRootElement();

Element studen = students.addElement("student");

Element name = studen.addElement("name");

name.setText("测试");

List<Element> list = students.elements();

Element students_2 = list.get(0);

Element name_2 = (Element) students_2.elements().get(0);

name_2.setText("测试2");

OutputFormat format = new OutputFormat("   ", true, "utf-8");

XMLWriter xw = new XMLWriter(new FileWriter("src\\student2.xml"),

format);

xw.write(doc);

xw.close();

}
分享到:
评论

相关推荐

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

    4. **XPath支持**:DOM4J实现了XPath表达式,允许通过简单的字符串查询XML文档中的任意节点,大大提高了代码的可读性和效率。 5. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确...

    dom4j_dom4j1.6.1安装包_

    在本文中,我们将深入探讨DOM4J 1.6.1版本的安装及其在Maven项目中的应用。 首先,DOM4J是一个基于Java的XML处理库,它支持多种XML处理模型,如SAX和DOM。DOM4J的核心特性包括XML文档的构建、解析、查询和修改。它...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    首先,DOM4J 1.6.1是较早的一个稳定版本,广泛应用于各种项目。它支持SAX和DOM解析器,同时提供了基于事件的解析模型和基于树的解析模型。此版本的主要特性包括: 1. 支持XPath:DOM4J提供了一种强大的方式来查询...

    dom4j dom4j dom4j dom4j

    5. **灵活性**:DOM4J可以轻松地与Spring、Hibernate等框架集成,广泛应用于企业级开发中。 6. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确性。 7. **XML编解码**:DOM4J...

    dom4j-2.1.3.zip

    DOM4J是一个强大的Java XML API,它提供了丰富的XML处理功能,包括文档对象模型(DOM)、简单API(SAX)以及事件驱动模型(StAX)。在本篇文章中,我们将深入探讨DOM4J 2.1.3版本,了解其核心特性、用途以及如何利用...

    dom4j-2.0.3.zip

    以下是一个简单的示例,展示如何使用DOM4J读取XML文档并查询元素: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class Dom4JExample { public ...

    dom4j所依赖的所有jar包

    DOM4J 1.6.1是这个库的一个稳定版本,发布于较早时期,但依然广泛应用于许多Java项目中,尤其是那些需要处理XML数据的系统。 首先,我们要了解DOM4J的核心概念。DOM(Document Object Model)是一种W3C标准,用于...

    dom4j 2.1.1

    DOM4J 2.1.1 是一个针对Java平台的高效、开源的XML处理库,其全称为“Document Object Model for Java”。这个库提供了一系列强大...无论是在简单的XML读写,还是复杂的XML操作和处理,DOM4J都能提供强大而灵活的支持。

    dom4j.jar 下载

    在Java应用程序中,DOM4J作为一个流行的选择,尤其在处理复杂的XML结构时,因为它提供了比标准DOM(Document Object Model)更简单和更有效的接口。 标题中的"dom4j.jar下载"指的是获取DOM4J库的可执行文件,即Java...

    利用DOM4J解析SOAP的简单示例

    在实际应用中,解析SOAP消息通常结合网络请求,例如使用Apache HttpClient发送SOAP请求并接收响应,然后使用DOM4J解析响应内容。了解DOM4J库的其他功能,如XPath查询、命名空间处理等,可以帮助更高效地处理复杂SOAP...

    dom4j的Java工程

    通过研究其中的代码,你可以掌握DOM4J处理XML的基本技巧,并理解如何将其应用到实际的Java项目中,以实现XML文件的高效管理和操作。无论是新手还是有经验的开发者,都能从中受益匪浅,提升对XML处理的能力。

    dom4j(2.1.1+ 2.0.2+ 1.6.1).zip

    DOM4J因其简单易用和强大的功能,成为Java XML处理领域的重要选择。学习DOM4J有助于理解XML处理的基本原理,提升XML文档操作的效率,同时在实际项目中能够更灵活地处理XML数据。无论是新手还是经验丰富的开发者,DOM...

    java dom4j 简单示例

    在这个“java dom4j 简单示例”中,我们将探讨如何在Spring框架的上下文中,结合数据库操作,使用DOM4J生成XML文档,并进一步利用Transformer进行XSLT转换。 首先,DOM4J的核心概念是Document对象,它代表整个XML...

    Dom4j的用法

    首先,Dom4j的应用非常简单,只需要对XML-DOM模型有基本的了解就能上手使用。 Dom4j的接口大部分定义在org.dom4j包中,这包括对XML文档节点进行操作的接口。例如,org.dom4j.Document接口代表了整个XML文档对象,...

    dom4j完整版.zip

    DOM4J是一个强大的Java库,专门用于处理XML文档。它为开发者提供了丰富的API,使得XML的解析、创建、修改和查询变得更为简单。这个“dom4j完整版.zip”...同时,提供的相关资源也能帮助开发者更好地理解和应用DOM4J。

    dom4j-1.6.1.jar.zip

    1. **DOM4J概述**:DOM4J是一个开源的Java XML API,它是对DOM、SAX和JDOM的扩展,提供了更简单、更灵活且更强大的API。它支持XPath和XSLT,可以用于构建和解析XML文档,同时也支持事件模型和流解析。 2. **XML处理...

    dom4j-1.6.1.jar

    4. **XPath支持**:XPath是一种在XML文档中查找信息的语言,dom4j支持XPath 1.0规范,可以通过简单的表达式快速找到需要的节点。 5. **事件处理**:dom4j也支持事件处理模型,允许开发者在XML解析过程中响应特定的...

Global site tag (gtag.js) - Google Analytics