- 浏览: 427622 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
xiaomuxingren:
你好,请问update-alternatives --inst ...
JDK8安装及jenkins安装 -
wahahachuang8:
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方 ...
HTML5 WebSocket -
晨曦的朝阳:
刚好有需求,学习一下!
MySql主从配置 -
mfkvfn:
这是恶意的商业竞争呀
解决 android 微信5.0及后续版本无法打开电话号码的问题 -
fwyhf:
require('./monitor/module_liste ...
NodeJS Server 进程自动重启
在项目中,我们很多都用到了xml
文件,无论是参数配置还是与其它系统的数据交互。
今天就来讲一下Java
中使用dom4j
来操作XML
文件。
我们需要引入的包:
//文件包 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileWriter; //工具包 import java.util.Iterator; import java.util.List; //dom4j包 import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;
1 、将XML 文件的内容转化为String
/** * doc2String * 将xml文档内容转为String * @return 字符串 * @param document */ public static String doc2String(Document document) { String s = ""; try { //使用输出流来进行转化 ByteArrayOutputStream out = new ByteArrayOutputStream(); //使用GB2312编码 OutputFormat format = new OutputFormat(" ", true, "GB2312"); XMLWriter writer = new XMLWriter(out, format); writer.write(document); s = out.toString("GB2312"); }catch(Exception ex) { ex.printStackTrace(); } return s; }
2 、将符合XML 格式的String 转化为XML Document
/** * string2Document * 将字符串转为Document * @return * @param s xml格式的字符串 */ public static Document string2Document(String s) { Document doc = null; try { doc = DocumentHelper.parseText(s); }catch(Exception ex) { ex.printStackTrace(); } return doc; }
3 、将Document 对象保存为一个xml 文件到本地
/** * doc2XmlFile * 将Document对象保存为一个xml文件到本地 * @return true:保存成功 flase:失败 * @param filename 保存的文件名 * @param document 需要保存的document对象 */ public static boolean doc2XmlFile(Document document,String filename) { boolean flag = true; try { /* 将document中的内容写入文件中 */ //默认为UTF-8格式,指定为"GB2312" OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GB2312"); XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format); writer.write(document); writer.close(); }catch(Exception ex) { flag = false; ex.printStackTrace(); } return flag; }
4 、将xml 格式的字符串保存为本地文件,如果字符串格式不符合xml 规则,则返回失败
/** * string2XmlFile * 将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败 * @return true:保存成功 flase:失败 * @param filename 保存的文件名 * @param str 需要保存的字符串 */ public static boolean string2XmlFile(String str,String filename) { boolean flag = true; try { Document doc = DocumentHelper.parseText(str); flag = doc2XmlFile(doc,filename); }catch (Exception ex) { flag = false; ex.printStackTrace(); } return flag; }
5 、载入一个xml 文档
/** * load * 载入一个xml文档 * @return 成功返回Document对象,失败返回null * @param uri 文件路径 */ public static Document load(String filename) { Document document = null; try { SAXReader saxReader = new SAXReader(); document = saxReader.read(new File(filename)); } catch (Exception ex){ ex.printStackTrace(); } return document; }
6 、演示String 保存为xml 文件
/** * xmlWriteDemoByString * 演示String保存为xml文件 */ public void xmlWriteDemoByString() { String s = ""; /** xml格式标题 "<?xml version='1.0' encoding='GB2312'?>" 可以不用写*/ s = "<config>\r\n" +" <ftp name='DongDian'>\r\n" +" <ftp-host>127.0.0.1</ftp-host>\r\n" +" <ftp-port>21</ftp-port>\r\n" +" <ftp-user>cxl</ftp-user>\r\n" +" <ftp-pwd>longshine</ftp-pwd>\r\n" +" <!-- ftp最多尝试连接次数 -->\r\n" +" <ftp-try>50</ftp-try>\r\n" +" <!-- ftp尝试连接延迟时间 -->\r\n" +" <ftp-delay>10</ftp-delay>\r\n" +" </ftp>\r\n" +"</config>\r\n"; //将文件生成到classes文件夹所在的目录里 string2XmlFile(s,"xmlWriteDemoByString.xml"); //将文件生成到classes文件夹里 string2XmlFile(s,"classes/xmlWriteDemoByString.xml"); }
7 、演示手动创建一个Document ,并保存为XML 文件
/** * 演示手动创建一个Document,并保存为XML文件 */ public void xmlWriteDemoByDocument() { /** 建立document对象 */ Document document = DocumentHelper.createDocument(); /** 建立config根节点 */ Element configElement = document.addElement("config"); /** 建立ftp节点 */ configElement.addComment("东电ftp配置"); Element ftpElement = configElement.addElement("ftp"); ftpElement.addAttribute("name","DongDian"); /** ftp 属性配置 */ Element hostElement = ftpElement.addElement("ftp-host"); hostElement.setText("127.0.0.1"); (ftpElement.addElement("ftp-port")).setText("21"); (ftpElement.addElement("ftp-user")).setText("cxl"); (ftpElement.addElement("ftp-pwd")).setText("longshine"); ftpElement.addComment("ftp最多尝试连接次数"); (ftpElement.addElement("ftp-try")).setText("50"); ftpElement.addComment("ftp尝试连接延迟时间"); (ftpElement.addElement("ftp-delay")).setText("10"); /** 保存Document */ doc2XmlFile(document,"classes/xmlWriteDemoByDocument.xml"); }
8 、演示读取文件的具体某个节点的值
/** * 演示读取文件的具体某个节点的值 */ public static void xmlReadDemo() { Document doc = load("classes/xmlWriteDemoByDocument.xml"); //Element root = doc.getRootElement(); /** 先用xpath查找所有ftp节点 并输出它的name属性值*/ List list = doc.selectNodes("/config/ftp" ); Iterator it = list.iterator(); while(it.hasNext()) { Element ftpElement = (Element)it.next(); System.out.println("ftp_name="+ftpElement.attribute("name").getValue()); } /** 直接用属性path取得name值 */ list = doc.selectNodes("/config/ftp/@name" ); it = list.iterator(); while(it.hasNext()) { Attribute attribute = (Attribute)it.next(); System.out.println("@name="+attribute.getValue()); } /** 直接取得DongDian ftp的 ftp-host 的值 */ list = doc.selectNodes("/config/ftp/ftp-host" ); it = list.iterator(); Element hostElement=(Element)it.next(); System.out.println("DongDian's ftp_host="+hostElement.getText()); }
9 、修改或删除某个值或属性
/** ftp节点删除ftp-host节点 */ ftpElement.remove(hostElement); /** ftp节点删除name属性 */ ftpElement.remove(nameAttribute); /** 修改ftp-host的值 */ hostElement.setText("192.168.0.1"); /** 修改ftp节点name属性的值 */ nameAttribute.setValue("ChiFeng");
发表评论
-
git版本控制工具分享
2012-07-06 02:09 0github用户: lockstion haiyupete ... -
fusioncharts学习心得
2010-11-03 17:51 7597至此声明:若需要商用,请大家支持正版! FusionChar ... -
OperaMasks中的注解工作方式
2010-10-11 22:29 18741.进入页面后如何根据@ManagedBean找到对应的后台J ... -
OperaMasks中的资源处理
2010-08-24 20:53 1056OperaMasks作为一个表现层框架,那么其属于对于资源机制 ... -
OperaMasks 的 delegate机制(Tree,Grid 二次取数)
2010-08-23 23:18 1465OperaMasks 二次取数 ... -
jxl基本操作
2009-05-13 16:40 1232jxl的一些总结 要往xls文件里面写入数据的时候需要 ... -
BeanShell简介
2008-12-29 18:53 2263简介: BeanShell 是一种脚本语言,一种完全符合j ... -
使用dom4j和xpath
2008-12-29 18:49 2109使用dom4j和XPath 配置开发包 dom4j-1.6 ... -
dom4j实例
2008-12-29 18:48 3820国外的dom4j已经很流行了,国内的相关资料相对较少,但普及 ... -
dom中使用xpath解析xml文件
2008-12-29 18:46 3189在使用Dom4j解析xml文档时,我们很希望有一种类似正则表达 ... -
Dom4j学习笔记
2008-12-29 18:33 2263一、生成xml文件 ... -
lucene多字段检索
2008-12-26 19:25 2372默认情况下,IndexSearcher 类的search ... -
IKAnalyzer基于lucene2.0版本API开发
2008-12-26 19:20 3399使用说明: IKAnalyzer 基于lucene2.0 ... -
JXL与Excel
2008-12-26 18:52 1331jxl 的一些总结 要往 xls 文件里面写 ...
相关推荐
DOM4J是Java中一个非常强大的XML处理库,它提供了丰富的API来操作XML文档,如读取、写入、修改以及查询XML。本教程将深入探讨XML DOM4J解析的相关知识点。 一、DOM4J基本概念 DOM4J是一种灵活的Java API,其设计...
DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件
dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的核心概念和使用方法,以及如何在Java项目中集成和应用它。 1. **DOM4J简介** DOM4J...
XMLDOM4J是Java语言中处理XML文档的一个库,它提供了强大的XML解析、操作和转换功能。这个库基于DOM(Document Object Model)模型,但它的性能比标准的Java DOM实现要好,因为它优化了内存使用并提高了处理速度。在...
在本文中,我们将深入探讨DOM4J如何进行XML操作,包括增加、删除和修改XML元素。 首先,我们需要理解XML的基本结构。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,它使用标签来描述数据。DOM4J通过...
DOM4j则是一个强大的Java库,用于处理XML文档,提供了丰富的API来实现XML的读取、写入、修改等操作。在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是...
导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写操作。 总之,DOM4J作为一款强大的XML处理工具,为Java开发者提供了丰富的功能和良好的性能,是处理XML文档的理想选择。无论是小型项目还是大型企业级...
DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...
Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...
如果你需要更精细地控制XML操作,如修改节点或添加新元素,DOM4J也提供了相应的API。 总结起来,DOM4J是处理XML的优秀工具,尤其适合解析具有任意深度的XML结构。通过`SAXReader`解析XML文件,`Document`和`Element...
本文将详细介绍Dom4j类库及其在XML操作中的应用。 Dom4j是一个开放源码的Java库,它为处理XML提供了一个灵活而高效的方法。它包含了DOM、SAX和StAX解析器,以及XPath表达式的支持,使得开发者可以方便地读取、创建...
这个压缩包包含了DOM4J的完整版本,适用于那些希望在Java项目中使用DOM4J进行XML操作的开发者。 首先,让我们深入了解一下DOM4J的核心概念和特性: 1. **Document对象**:DOM4J中的Document对象代表整个XML文档。...
三、DOM4J操作XML 1. 解析XML:使用DocumentBuilder解析XML文件,创建Document对象,例如`Document document = DocumentHelper.parseText(xmlString);` 2. 访问元素:通过Element的`getRootElement()`获取根元素,`...
DOM4J是Java环境中一个强大、灵活的XML处理库,它提供了XML的读取、写入、解析和操作的能力。本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解...
在本示例中,"dom4jExample.java"是一个Java程序,它展示了如何利用DOM4J库来操作XML文件。 首先,我们需要了解DOM4J的基本概念。DOM4J采用Document Object Model (DOM)接口,但它的实现比标准DOM更快,占用内存更...
DOM4J是一款强大的Java XML API,它提供了丰富的功能,使得在Java应用程序中处理XML文档变得简单而高效。DOM4J基于DOM(文档对象模型)但比DOM更轻量级,同时引入了SAX和JDOM的优点,使其在性能和灵活性上都有显著...
### 使用dom4j操作XML详解 #### 一、DOM4j简介与配置 **DOM4j** 是一款专为Java平台设计的开源XML解析处理工具。它的设计充分考虑了性能和易用性,同时提供了对DOM、SAX及JAXP等标准的支持,因此非常适合进行复杂...
DOM4J不仅支持DOM,还引入了XPath表达式来定位XML元素,这使得查询和操作XML变得更加直观。比如,你可以使用`DocumentHelper.parseText()`或`readFile()`方法解析XML,然后利用`selectNodes()`或`selectSingleNode()...
dom4j-1.6.1.jar是这个库的二进制包,包含了所有必要的类和方法,使得开发者可以在项目中直接引用,进行XML操作。 1. **DOM4J基本概念** - DOM4J是一个基于Java的XML处理库,它扩展了Java的标准DOM API,提供了更...