package com.xu.do4j; import java.io.File; import java.io.FileWriter; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.junit.Test; public class dom4j_01 { /** * 建立一个XML文档,文档名由输入属性决定 * @param filename 需建立的文件名 * @return 返回操作结果, 0表失败, 1表成功 */ public boolean createXMLFile(String filename){ /** 返回操作结果, false表失败, true表成功 */ boolean returnValue = false; /** 建立document对象*/ Document document = DocumentHelper.createDocument(); /** 建立XML文档的根books */ Element booksElement = document.addElement("books"); /** 加入一行注释 */ booksElement.addComment("This is a test for dom4j, holen, 2004.9.11"); /** 加入第一个book节点*/ Element bookElement = booksElement.addElement("book"); /** 加入show属性内容 */ bookElement.addAttribute("show","yes"); /** 加入title节点 */ Element titleElement = bookElement.addElement("title"); /** 为title设置内容 */ titleElement.setText("Dom4j Tutorials"); /** 再添加一个book节点信息 */ bookElement = booksElement.addElement("book"); bookElement.addAttribute("show", "yes"); titleElement = bookElement.addElement("title"); titleElement.setText("Lucene Studing"); /** 再添加一个book节点信息 */ bookElement = booksElement.addElement("book"); bookElement.addAttribute("show", "no"); titleElement = bookElement.addElement("title"); titleElement.setText("Lucene in Action"); Element ownerElement = booksElement.addElement("owner"); ownerElement.setText("O'Reilly"); try{ File file = new File(filename); if(null != file){ returnValue = writer(file,document); } }catch(Exception e){ e.printStackTrace(); } return returnValue; } /** * * @param file * @param document * @return * @throws Exception */ public boolean writer(File file , Document document) throws Exception{ boolean flag = false; OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter xmlWriter = new XMLWriter(new FileWriter(file), format); xmlWriter.write(document); xmlWriter.close(); flag = true; return flag; } /** * * @param url * @return * @throws DocumentException */ public Document parse(String filename) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(filename); return document; } public void reader(Document document) throws DocumentException { Element root = document.getRootElement(); Iterator it = root.elementIterator(); while (it.hasNext()) { Element element = (Element) it.next(); //未知属性名称情况下 Iterator attrIt = element.attributeIterator(); System.out.print("element:"+element.getName()); while (attrIt.hasNext()) { Attribute a = (Attribute) attrIt.next(); System.out.print("-->attribute:"+a.getValue()); } Iterator titleIt = element.elementIterator(); if(!titleIt.hasNext()){ System.out.print("-->text:"+element.getText()); } while (titleIt.hasNext()){ Element titleElement = (Element) titleIt.next(); System.out.print("-->titleElement:"+titleElement.getName()); if(null != element.getText() && !"".equals(element.getText())){ System.out.println("-->text:"+titleElement.getText()); } } //已知属性名称情况下 // System.out.println("show: " + element.attributeValue("show")); //未知元素名情况下 // Iterator eleIt = element.elementIterator(); // while (eleIt.hasNext()) { // Element e = (Element) eleIt.next(); // System.out.println(e.getName() + ": " + e.getText()); // } //已知元素名情况下 // System.out.println("title: " + element.elementText("title")); } } public void readerReal(Document document) throws DocumentException { Element root = document.getRootElement(); String owner = root.elementText("owner"); if(null != owner && !"".equals(owner)){ System.out.println(owner); } Iterator it = root.elementIterator(); while(it.hasNext()){ Element element = (Element) it.next(); String title = element.elementText("title"); if(null != title && !"".equals(title)){ System.out.println(title); } } } //@Test public void testCreateXMLFile(){ String filename = "D:"+File.separator+"bookinfo.xml"; if(createXMLFile(filename)){ System.out.println("生成xml成功"); }else{ System.out.println("生成xml失败"); } } @Test public void testReadXMLFile(){ String filename = "D:"+File.separator+"bookinfo.xml"; try { Document document = parse(filename); readerReal(document); } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...
**DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...
"Dom4j 生成 XML 和解析 XML" Dom4j 是一个 Java 库,用于处理 XML 文档。它提供了生成和解析 XML 文档的功能。在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j ...
接下来,我们将创建一个`SAXReader`实例,它是DOM4J中的解析器,用于读取XML文件: ```java SAXReader reader = new SAXReader(); ``` 然后,使用`reader`读取XML文件并获取`Document`对象,`Document`代表整个XML...
Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...
在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...
Jaxen可以与多种XML解析器(如DOM、DOM4J、JDOM等)协同工作,提供跨平台的XPath支持。 总结来说,DOM4J是一个全面且易用的XML处理工具,广泛应用于Java开发中。通过`dom4j-1.6.1.jar`和`jaxen-1.1.1.jar`这两个jar...
### DOM4J解析XML知识点详解 ...通过结合使用DOM4J的基本类和XPath表达式,可以轻松地实现对XML文档的查询和修改。无论是对于开发人员还是对于那些需要频繁处理XML数据的应用程序来说,DOM4J都是一个非常有价值的工具。
DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与流行的Java框架(如Spring和Hibernate)的良好集成。 在解析XML时,DOM4J有两种主要的解析方式:SAX和DOM。SAX是一种基于事件的解析器,适用于处理大型...
DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML解析,并通过实例来帮助理解。 首先,让我们了解DOM4J的基本概念。DOM4J是...
Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...
在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...
XPath是一种在XML文档中查找信息的语言,与DOM4J结合使用,可以高效地定位到XML文档中的特定节点。接下来,我们将深入探讨这两个关键概念以及如何通过它们实现XML的处理。 1. DOM4J解析XML 当我们处理XML文档时,...
总结来说,DOM4J为Java开发者提供了一套全面的API来处理XML文档,包括解析、创建、修改和序列化XML。在`CacheInit.java`这个示例中,可能包含了利用DOM4J解析`emailTemplateConfig.xml`文件,提取或修改其中的配置...
8. **与Spring框架集成**:在Spring框架中,DOM4J常用于配置文件的解析,例如Spring的bean定义XML文件。 DOM4J的版本迭代带来了许多改进和新特性,例如从1.6.1到2.1.1的过程中,可能包含了性能优化、API调整、错误...
dom4j是一个强大的开源XML框架,它提供了处理XML文档的各种功能,包括解析、创建、修改等。相比W3C DOM API,dom4j的优势在于其内置的XPath支持,允许更方便地定位和操作XML文档中的节点。 **预先设置** 在使用dom4...
本教程将深入探讨XML DOM4J解析的相关知识点。 一、DOM4J基本概念 DOM4J是一种灵活的Java API,其设计目标是简化XML处理,提供高效且易于使用的API。与标准的DOM(Document Object Model)相比,DOM4J更轻量级,...