- 浏览: 419708 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
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 7568至此声明:若需要商用,请大家支持正版! FusionChar ... -
OperaMasks中的注解工作方式
2010-10-11 22:29 18391.进入页面后如何根据@ManagedBean找到对应的后台J ... -
OperaMasks中的资源处理
2010-08-24 20:53 1018OperaMasks作为一个表现层框架,那么其属于对于资源机制 ... -
OperaMasks 的 delegate机制(Tree,Grid 二次取数)
2010-08-23 23:18 1437OperaMasks 二次取数 ... -
jxl基本操作
2009-05-13 16:40 1183jxl的一些总结 要往xls文件里面写入数据的时候需要 ... -
BeanShell简介
2008-12-29 18:53 2213简介: BeanShell 是一种脚本语言,一种完全符合j ... -
使用dom4j和xpath
2008-12-29 18:49 2072使用dom4j和XPath 配置开发包 dom4j-1.6 ... -
dom4j实例
2008-12-29 18:48 3789国外的dom4j已经很流行了,国内的相关资料相对较少,但普及 ... -
dom中使用xpath解析xml文件
2008-12-29 18:46 3142在使用Dom4j解析xml文档时,我们很希望有一种类似正则表达 ... -
Dom4j学习笔记
2008-12-29 18:33 2235一、生成xml文件 ... -
lucene多字段检索
2008-12-26 19:25 2333默认情况下,IndexSearcher 类的search ... -
IKAnalyzer基于lucene2.0版本API开发
2008-12-26 19:20 3360使用说明: IKAnalyzer 基于lucene2.0 ... -
JXL与Excel
2008-12-26 18:52 1308jxl 的一些总结 要往 xls 文件里面写 ...
相关推荐
DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件
例题采用的是dom4j对xml的操作,包含了对xml的增加删除修改操作.
该示例实现MAVEN来进行创建的,实现了dom4j操作XML文件,包括创建XML、动态创建XML节点、更新XML节点、删除XML节点。
本教程是dom4j操作xml的增删改查的案例,当我们使用dom4j可以做基础性的参考
Dom4j是一个开源的Java XML 解析处理工具,用来读写XML文件,它应用于Java平台,采用了Java集合框架并完全支持DOM, SAX和JAXP。具有性能优异、功能强大和极易使用的特点。可以作为解析XML文档析首先API。本文讲述了...
dom4j解析XML文件格式dom4j解析XML文件格式dom4j解析XML文件格式
Java 四种方式操作xml,包括xml,dom,sax,jdom这四种方式的一个简单例子。
java 通过dom4j操作 xml,含范例和源码
基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。
Dom4j 操作 XML
用dom4j操作xml的例子,基本的增删改查都有。
dom4j解析xml文件的压缩包,完整版。对jdom进行了封装。包含源码,jar包以及所需的全部内容。
DOM4j是一个易用的,开源的JAVA操作XML的API,写过一篇4种XML操作API的比较,DOM4j是性能和易用行最佳的。因此做一个小教程,供初学者学习。
运行dom4jExample.java就可以了
java dom4j 解析xml文档 使用java操作xml 例如创建 读取 删除 等等
java 操作XML 采用(dom+dom4j)读写源码 lib包
完整的讲解一个dom4j对xml的增删改查
java中四种操作(dom、sax、jdom、dom4j)xml方式详解与
dom4j是非常优秀的xml解析包,操作起来读写xml非常方便。把自己写的一个读写dom4j.xml实例共享给大家
Dom4j_使用简介DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java ...