前言: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();
}
分享到:
相关推荐
4. **XPath支持**:DOM4J实现了XPath表达式,允许通过简单的字符串查询XML文档中的任意节点,大大提高了代码的可读性和效率。 5. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确...
在本文中,我们将深入探讨DOM4J 1.6.1版本的安装及其在Maven项目中的应用。 首先,DOM4J是一个基于Java的XML处理库,它支持多种XML处理模型,如SAX和DOM。DOM4J的核心特性包括XML文档的构建、解析、查询和修改。它...
首先,DOM4J 1.6.1是较早的一个稳定版本,广泛应用于各种项目。它支持SAX和DOM解析器,同时提供了基于事件的解析模型和基于树的解析模型。此版本的主要特性包括: 1. 支持XPath:DOM4J提供了一种强大的方式来查询...
5. **灵活性**:DOM4J可以轻松地与Spring、Hibernate等框架集成,广泛应用于企业级开发中。 6. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确性。 7. **XML编解码**:DOM4J...
DOM4J是一个强大的Java XML API,它提供了丰富的XML处理功能,包括文档对象模型(DOM)、简单API(SAX)以及事件驱动模型(StAX)。在本篇文章中,我们将深入探讨DOM4J 2.1.3版本,了解其核心特性、用途以及如何利用...
以下是一个简单的示例,展示如何使用DOM4J读取XML文档并查询元素: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class Dom4JExample { public ...
DOM4J 1.6.1是这个库的一个稳定版本,发布于较早时期,但依然广泛应用于许多Java项目中,尤其是那些需要处理XML数据的系统。 首先,我们要了解DOM4J的核心概念。DOM(Document Object Model)是一种W3C标准,用于...
DOM4J 2.1.1 是一个针对Java平台的高效、开源的XML处理库,其全称为“Document Object Model for Java”。这个库提供了一系列强大...无论是在简单的XML读写,还是复杂的XML操作和处理,DOM4J都能提供强大而灵活的支持。
在Java应用程序中,DOM4J作为一个流行的选择,尤其在处理复杂的XML结构时,因为它提供了比标准DOM(Document Object Model)更简单和更有效的接口。 标题中的"dom4j.jar下载"指的是获取DOM4J库的可执行文件,即Java...
在实际应用中,解析SOAP消息通常结合网络请求,例如使用Apache HttpClient发送SOAP请求并接收响应,然后使用DOM4J解析响应内容。了解DOM4J库的其他功能,如XPath查询、命名空间处理等,可以帮助更高效地处理复杂SOAP...
通过研究其中的代码,你可以掌握DOM4J处理XML的基本技巧,并理解如何将其应用到实际的Java项目中,以实现XML文件的高效管理和操作。无论是新手还是有经验的开发者,都能从中受益匪浅,提升对XML处理的能力。
DOM4J因其简单易用和强大的功能,成为Java XML处理领域的重要选择。学习DOM4J有助于理解XML处理的基本原理,提升XML文档操作的效率,同时在实际项目中能够更灵活地处理XML数据。无论是新手还是经验丰富的开发者,DOM...
在这个“java dom4j 简单示例”中,我们将探讨如何在Spring框架的上下文中,结合数据库操作,使用DOM4J生成XML文档,并进一步利用Transformer进行XSLT转换。 首先,DOM4J的核心概念是Document对象,它代表整个XML...
首先,Dom4j的应用非常简单,只需要对XML-DOM模型有基本的了解就能上手使用。 Dom4j的接口大部分定义在org.dom4j包中,这包括对XML文档节点进行操作的接口。例如,org.dom4j.Document接口代表了整个XML文档对象,...
DOM4J是一个强大的Java库,专门用于处理XML文档。它为开发者提供了丰富的API,使得XML的解析、创建、修改和查询变得更为简单。这个“dom4j完整版.zip”...同时,提供的相关资源也能帮助开发者更好地理解和应用DOM4J。
1. **DOM4J概述**:DOM4J是一个开源的Java XML API,它是对DOM、SAX和JDOM的扩展,提供了更简单、更灵活且更强大的API。它支持XPath和XSLT,可以用于构建和解析XML文档,同时也支持事件模型和流解析。 2. **XML处理...
4. **XPath支持**:XPath是一种在XML文档中查找信息的语言,dom4j支持XPath 1.0规范,可以通过简单的表达式快速找到需要的节点。 5. **事件处理**:dom4j也支持事件处理模型,允许开发者在XML解析过程中响应特定的...