- 浏览: 2870140 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
在项目中,我们很多都用到了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;
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;
}
* 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;
}
* 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;
}
* 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;
}
* 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;
}
* 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");
}
* 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");
}
* 演示手动创建一个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());
}
* 演示读取文件的具体某个节点的值
*/
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");
ftpElement.remove(hostElement);
/** ftp节点删除name属性 */
ftpElement.remove(nameAttribute);
/** 修改ftp-host的值 */
hostElement.setText("192.168.0.1");
/** 修改ftp节点name属性的值 */
nameAttribute.setValue("ChiFeng");
发表评论
-
ATOM编辑器快捷键大全
2021-02-28 10:03 413在Github上总结的ATOM 快捷键,用ATOM 编辑器的 ... -
使用Amazon的AWS来搭建属于自己的shadowsocks服务器
2015-04-08 22:22 16182相信有不少水友已经 ... -
开车技术
2014-10-16 12:24 541如何判断车距,这个太实用了 一、超车变道时如何判 ... -
Running Jar file in Windows
2014-04-30 10:11 798Easiest route is probably upgr ... -
Windows的命令行下设置网络代理
2014-03-31 09:42 3394在公司访问网络的时候,需要设置代理,设置浏览器的代理是相当的 ... -
超全面的收房小知识
2013-12-29 15:09 743验房:就是竭尽全力发现问题,进而在装修的时候着手解决这些问题 ... -
Kmplayer的各种功能设置
2013-11-17 17:59 2131Kmplayer的各种功能设置 ... -
9 Ways To Make Thunderbird Load Your Email Faster
2013-09-14 15:57 1238If you asked anyone for the fi ... -
Protobuf 的安装使用总结
2013-09-12 13:28 8513ProtoBuf的官方下载包并不包含jar文件,需要用户自己 ... -
Java应用程序的MODBUS通讯
2013-09-06 14:15 17818实验目的 JAVA应用程序通过MODBUS协议RTU模式读 ... -
在本地使用java收发/调试Modbus协议数据
2013-08-28 13:59 185661. 安装Modbus仿真工具Mo ... -
Modbus Error Code List
2013-08-27 16:53 1667HEX Error Code for Modbus Plus ... -
49 款人脸检测/识别的API、库和软件
2013-08-26 19:58 1816自从谷歌眼镜被推出以 ... -
sublime配置全攻略
2013-08-17 14:16 2211sublime本身功能有限,我们需要装上一些插件使其变得 ... -
程序员提高效率工具
2013-08-12 11:14 1403windows下的虚拟桌面管理工具 windows xp ... -
Go 编程语言的 12 条最佳实践
2013-08-09 17:53 1097最佳实践 维基百科的定义是: “最佳实践是一种方法或技术 ... -
sublime 插件管理
2013-08-08 18:00 1239插件管理 1、安装Package Control 按C ... -
sublime2快捷键
2013-08-08 17:51 1128快捷键 Ctrl+L 选择整行(按住-继续选择下行) C ... -
sublime及相关资源
2013-08-08 17:10 913Sublime Text3 Buld 3038 中文优化注 ... -
为设计师准备的 15 个免费新鲜的字体
2013-08-04 17:45 1108Axe Handel Going Fast Ka ...
相关推荐
DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件
为了处理XML文档,Java提供了多种API,其中最常用的包括DOM、SAX、DOM4J和JDOM。以下是对这些方法的详细介绍: 1. DOM(Document Object Model) DOM是一种树形结构的API,它将整个XML文档加载到内存中,形成一个...
Java解析XML时,dom4j是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...
在Java中,有多种方式来解析和操作XML文档,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM和DOM4J。每种方法都有其特点和适用场景,相应的,它们也需要引入特定的库文件。以下是对这些方法...
为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...
1. **解析XML文档:** 使用DOM4J2,你可以轻松读取XML文件并将其转换为DOM4J的Document对象。这个过程称为解析。例如: ```java SAXReader reader = new SAXReader(); Document document = reader.read(new File...
在该程序中,开发者首先会使用DOM4j解析XML文件,将XML数据结构转换为Java对象或数据结构。然后,利用Apache POI创建一个新的Excel工作簿,根据XML数据创建工作表、行和单元格,并填充相应的值。此外,可能还会涉及...
Java中的DOM4J库是一个非常流行的处理XML文档的工具,它提供了一套简单易用的API,使得在Java中操作XML文件变得相当便捷。本文主要介绍如何使用DOM4J进行XML文件的操作,包括XML字符串与Document对象之间的转换,...
要开始解析XML文件,首先需要导入DOM4J的相关包: ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; ``` 接下来,我们将创建...
在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是Apache软件基金会的一个项目,它通过定义项目对象模型(Project Object Model,POM)来管理项目的构建、...
DOM4J是一个非常流行的Java XML API,它扩展了DOM,提供了更方便的操作XML的功能。DOM4J不仅支持DOM,还支持SAX和STAX解析。 读取XML文件: ```java import org.dom4j.DocumentHelper; import org.dom4j.Document; ...
解析XML文件时,DOM4J提供了两种主要的方式:DOM阅读器和SAX阅读器。 - **DOM阅读器**:首先,通过`DocumentFactory.createDocument()`方法创建一个`Document`对象,然后使用`read()`方法读取XML文件,将整个XML...
在处理带有命名空间的XML文件时,DOM4J库显得尤为重要,因为XML命名空间是XML规范中一个关键的概念,用于避免元素名称的冲突。 XML命名空间的引入是为了在一个文档中使用来自不同来源的元素和属性。它们通过URI...
Java DOM4J库是用于处理XML文档的一个强大的开源框架,它提供了一种简单而灵活的方式来创建、解析和操作XML文件。DOM4J这个名字中的“DOM”代表文档对象模型(Document Object Model),这是一种标准的API,用于在...
8. **读写XML文件**:DOM4J提供了读取XML文件到`Document`对象,以及将`Document`对象写回XML文件的方法。 9. **修改XML**:通过DOM4J,你可以添加、删除或修改XML元素、属性和文本内容,实现XML文档的动态更新。 ...
例如,使用DOM4J解析XML文件时,你可以创建`Document`对象,然后通过`DocumentBuilderFactory`和`DocumentBuilder`来读取XML文件。在MySQL数据库操作中,可以创建`Connection`对象,使用`Statement`或`...
Java 解析 XML 并导入数据库(DOM4J) ...本例展示了如何使用 Java 语言和 DOM4J 库来解析 XML 文件并将其导入到数据库中。该示例代码提供了一个基本的框架,用于开发 XML 文件导入数据库的应用程序。
DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时的强大工具。DOM4J的最大亮点在于其简洁易用的API...
1. **解析XML**:DOM4J可以读取XML文件,将其转换为一个树形结构,即Document对象。解析器有SAX和DOM两种模式,SAX是事件驱动的,适用于大文件,而DOM则将整个文档加载到内存中,适合小文件。 2. **创建XML**:DOM4...
Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...