接口:
package com.dom4j; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; public interface Dom4jUtilInterface { //修改属性值。欲修改属性名可以删除旧属性,增加新属性 void modifyAttribute(Attribute attribute, String value); //修改节点的名称的名称和节点值 void modifyElement(Element element, String name, String value); //删除指定名称的属性 void deleteNameAttribute(Element element, String name); //删除某个节点 void deleteSeed(Element root, Element del); @SuppressWarnings("rawtypes") List gResultWithXpath(String xpath, String filename); void gAttributesOfAElement(Element element); //访问List类型的所有属性 void iteraterListAttribute(List<Attribute> list); //获取某节点下的所有属性 List<Attribute> gNameAttributes(Element element); Attribute gAttribute(int index, Element element); Attribute gAttribute(String name, Element element); //迭代某个元素的所有子元素 void gSeedOfAElement(Element element); //访问指定名称的第一个节点 Element gFirstSeed(String name, Element root); //访问指定节点的全部内容 List<Element> gNamedSeed(String name, Element root); //访问List类型的子节点内容 void iteraterList(List<Element> list); //获取根节点下的所有子节点 List<Element> gRootSeed(Element root); //获取根节点 Element gRoot(String filename); //使用DOMReader解析 Document DOMReaderReadXML(String filename); //使用SAXReader读取XML文档 Document SAXReadXML(String filename); /* * 创建XML文档的内容 */ int createXML(String filename); /* * 生成XML文件 */ int makeXMLDocument(Document document, String filename); }
实现:
package com.dom4j.bean; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.DOMReader; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.xml.sax.SAXException; import com.dom4j.Dom4jUtilInterface; public class Dom4jUtil implements Dom4jUtilInterface { //修改属性值。欲修改属性名可以删除旧属性,增加新属性 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#modifyAttribute(org.dom4j.Attribute, java.lang.String) */ public void modifyAttribute(Attribute attribute,String value){ attribute.setText(value); } //修改节点的名称的名称和节点值 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#modifyElement(org.dom4j.Element, java.lang.String, java.lang.String) */ public void modifyElement(Element element,String name,String value){ element.setName(name); element.setText(value); } //删除指定名称的属性 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#deleteNameAttribute(org.dom4j.Element, java.lang.String) */ public void deleteNameAttribute(Element element,String name){ element.remove(element.attribute(name)); } //删除某个节点 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#deleteSeed(org.dom4j.Element, org.dom4j.Element) */ public void deleteSeed(Element root,Element del){ root.remove(del); } //使用Xpath获取节点和属性 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gResultWithXpath(java.lang.String, java.lang.String) */ @SuppressWarnings("rawtypes") public List gResultWithXpath(String xpath,String filename){ Document document=SAXReadXML(filename); return document.selectNodes(xpath); } //迭代某个节点下的所有属性 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gAttributesOfAElement(org.dom4j.Element) */ @SuppressWarnings("unchecked") public void gAttributesOfAElement(Element element){ for (Iterator<Attribute> it=element.attributeIterator();it.hasNext();) { Attribute a=(Attribute)it.next(); System.out.println(a.getStringValue()); } } //访问List类型的所有属性 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#iteraterListAttribute(java.util.List) */ public void iteraterListAttribute(List<Attribute> list){ for (Iterator<Attribute> it=list.iterator();it.hasNext();) { Attribute attr=it.next(); System.out.println(attr.getStringValue()); } } //获取某节点下的所有属性 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gNameAttributes(org.dom4j.Element) */ @SuppressWarnings("unchecked") public List<Attribute> gNameAttributes(Element element){ return element.attributes(); } //按照属性顺序,获取属性 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gAttribute(int, org.dom4j.Element) */ public Attribute gAttribute(int index,Element element){ return element.attribute(index); } //获取指定名称的元素的属性 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gAttribute(java.lang.String, org.dom4j.Element) */ public Attribute gAttribute(String name,Element element){ return element.attribute(name); } //迭代某个元素的所有子元素 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gSeedOfAElement(org.dom4j.Element) */ @SuppressWarnings("unchecked") public void gSeedOfAElement(Element element){ for (Iterator<Element> it=element.elementIterator();it.hasNext();) { Element e=(Element)it.next(); System.out.println(e.getStringValue()); } } //访问指定名称的第一个节点 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gFirstSeed(java.lang.String, org.dom4j.Element) */ public Element gFirstSeed(String name,Element root){ return root.element(name); } //访问指定节点的全部内容 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gNamedSeed(java.lang.String, org.dom4j.Element) */ @SuppressWarnings("unchecked") public List<Element> gNamedSeed(String name,Element root){ return root.elements(name); } //访问List类型的子节点内容 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#iteraterList(java.util.List) */ public void iteraterList(List<Element> list){ for (Iterator<Element> it=list.iterator();it.hasNext();) { Element e=(Element)it.next(); System.out.println(e.getStringValue()); } } //获取根节点下的所有子节点 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gRootSeed(org.dom4j.Element) */ @SuppressWarnings("unchecked") public List<Element> gRootSeed(Element root){ return root.elements(); } //获取根节点 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#gRoot(java.lang.String) */ public Element gRoot(String filename){ Document document=SAXReadXML(filename); return document.getRootElement(); } //使用DOMReader解析 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#DOMReaderReadXML(java.lang.String) */ public Document DOMReaderReadXML(String filename){ DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder db=null; Document document=null; try { db=dbf.newDocumentBuilder(); File file=new File(filename); org.w3c.dom.Document wdocument=db.parse(file); DOMReader reader=new DOMReader(); document=reader.read(wdocument); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (IOException e) { // TODO: handle exception e.printStackTrace(); }catch (SAXException e) { // TODO: handle exception e.printStackTrace(); } return document; } //使用SAXReader读取XML文档 /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#SAXReadXML(java.lang.String) */ public Document SAXReadXML(String filename){ SAXReader reader=new SAXReader(); Document document=null; try { document =reader.read(filename); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } return document; } /* * 创建XML文档的内容 */ /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#createXML(java.lang.String) */ public int createXML(String filename){ //定义返回结果,1表示成功,0表示失败 int returnvalue=0; //创建文档 Document document=DocumentHelper.createDocument(); //文档增加节点,即根节点,一个文档只能有一个根节点,多加出错。 Element root=document.addElement("books"); //添加注释 root.addComment("this is a test for dom4j to createXML 2012-11-7"); //第一种添加节点的方法 //根节点下添加节点 Element first=root.addElement("book"); //节点添加属性 first.addAttribute("name", "JAVA"); first.addAttribute("id", "1234567890"); //节点下添加节点 Element info=first.addElement("Content"); //节点设置数据 info.setText("Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言"); //第二种添加节点的方法 //创建节点 Element second=DocumentHelper.createElement("book"); //将节点加入到根节点下 root.add(second); //创建节点属性,第一个指定拥有者,也可以为空 Attribute name=DocumentHelper.createAttribute(second, "name", "C++"); //将属性添加到节点上 second.add(name); //创建子节点,并加入到节点中 Element info2=DocumentHelper.createElement("Content"); info2.setText("C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言"); second.add(info2); //生成XML文档 returnvalue=makeXMLDocument(document, filename); return returnvalue; } /* * 生成XML文件 */ /* (non-Javadoc) * @see com.dom4j.bean.Dom4jUtilInterface#makeXMLDocument(org.dom4j.Document, java.lang.String) */ public int makeXMLDocument(Document document,String filename){ //定义返回结果,1表示成功,0表示失败 int returnValue=0; try { // 创建格式化类 OutputFormat format=OutputFormat.createPrettyPrint(); // 设置编码格式,默认UTF -8 format.setEncoding("UTF-8"); // 创建输出流,此处要使用Writer,需要指定输入编码格式,使用OutputStream则不用 FileOutputStream fos=new FileOutputStream(filename); // 创建xml 输出流 XMLWriter writer=new XMLWriter(fos, format); // 生成xml 文件 writer.write(document); writer.close(); // 执行成功,需返回1 returnValue = 1; } catch (FileNotFoundException e) { e.printStackTrace(); }catch (UnsupportedEncodingException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } return returnValue; } }
相关推荐
首先,Dom4j的应用非常简单,只需要对XML-DOM模型有基本的了解就能上手使用。 Dom4j的接口大部分定义在org.dom4j包中,这包括对XML文档节点进行操作的接口。例如,org.dom4j.Document接口代表了整个XML文档对象,...
#### 三、DOM4j基本使用方法 1. **读取并解析XML文档** 要读取并解析XML文档,可以使用`org.dom4j.io`包中的`SAXReader`类。`SAXReader`是一个轻量级的解析器,适用于大型文档,因为它不会一次性将整个文档加载到...
总的来说,这个"dom4j基本例子"涵盖了DOM4J的基本操作,包括XML的解析、元素的增删改查以及使用XPath进行查询。通过学习和理解这个例子,你可以更好地掌握DOM4J库,并将其应用到自己的XML处理任务中。如果你深入研究...
### Dom4J生成XML的完整方法详解 在Java开发领域,处理XML文档是常见的需求之一。Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库...
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
DOM4J的使用方法非常直观。例如,你可以使用以下代码创建一个新的XML文档: ```java DocumentFactory factory = DocumentFactory.getInstance(); Document document = factory.createDocument(); Element root...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单易行。在Java世界中,DOM4J是与DOM、SAX和JDOM等其他XML处理库并驾齐驱的一个选择,尤其在处理...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。...了解并掌握DOM4J的使用,对于任何涉及XML的Java开发者来说都是非常有价值的技能。
通过阅读和实践DOM4J的帮助文档和使用教程,开发者可以全面掌握DOM4J的各种特性和用法,从而更高效地处理XML数据。这个压缩包提供的资料全面且详细,对于想要深入理解DOM4J的Java开发人员来说,是一份非常宝贵的资源...
标题提及的"dom4j_1.6.1.jar"和"dom4j_2.1.0.jar"是两个不同版本的DOM4J库的Java档案文件,DOM4J是一个非常流行的Java XML API,用于处理XML文档。这两个版本的差异在于功能、性能优化和可能存在的bug修复。描述中...
本文将通过一个具体的示例代码来深入探讨DOM4j的使用方法,涵盖创建、修改XML文档的常用操作。 #### 创建XML文档 在DOM4j中,创建XML文档非常直观。首先,需要导入DOM4j相关的包: ```java import org.dom4j....
"dom4j-2.1.3-javadoc.jar"文件则包含了DOM4J库的API文档,是开发者学习和使用DOM4J的重要参考资料。通过这个文件,我们可以查找类、接口、方法的详细说明,理解它们的功能和使用方式,这对于开发过程中快速定位问题...
其中,`dom4j-1.6.1.jar`是运行时库,包含了DOM4J的所有类和方法;`dom4j-1.6.1-sources.jar`包含了源代码,方便查看和学习;`dom4j-1.6.1.tar.gz`和`dom4j-1.6.1.zip`则是不同的压缩格式,提供了库文件的打包形式。...
在"dom4jdemo"这个子文件夹中,很可能是包含了一个或多个Java源代码文件,演示了如何使用DOM4J进行XML操作的实例。这些代码通常会包含导入DOM4J库的语句,如`import org.dom4j.Document;`和`import org.dom4j....
在解压后的文件“dom4j”中,可能包含了DOM4J库的源码、API文档、示例代码等资源,这对于深入理解和使用DOM4J非常有帮助。通过阅读源码,可以了解其实现原理;查看API文档,可以快速找到所需功能的方法和接口;运行...
DOM4J中的Attribute类提供了创建、修改和删除属性的方法。 3. **Document**: Document类表示整个XML文档,是整个XML结构的根节点。它包含了XML文档的声明、元素、注释等所有信息。 4. **XPath**: DOM4J支持XPath...
**DOM4J中XPath用法详解** XPath,全称为XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来方便地选取XML文档中的节点,包括元素、属性、文本等。DOM4J是一个非常流行的Java XML API,它提供了一...
7. **文档处理API**:DOM4J的API设计得非常直观,例如Element接口提供了添加子元素、删除元素、查找元素、获取属性值等方法,使得XML操作变得简单易用。 综上所述,DOM4J是一个强大且易用的XML处理工具,配合Jaxen...
赠送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工具包"表明这是一个包含多版本DOM4J库的集合,可能包括了从早期到较新的一些版本,如dom4j-1.4.jar、dom4j-1.6.1.jar和dom4j-1.5.2.jar。这些不同版本的库可能分别对应于不同的功能特性...