Java操作XML的工具类
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringWriter;
import java.io.Writer; import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.ProcessingInstruction;
import org.dom4j.io.DocumentSource;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class XMLUtil {
/**
* 以编码为UTF-8的方式返回xml
* @param doc Document
* @return String
*/
public static String toString(Document doc) {
return toString(doc, "UTF-8");
} /**
* 以指定编码格式返回xml
* @param doc Document
* @param encoding String
* @return String
*/
public static String toString(Document doc, String encoding) {
if (null != doc) {
OutputFormat outputFormat = new OutputFormat();
outputFormat.setEncoding(encoding);
StringWriter stringWriter = new StringWriter();
XMLWriter xmlWriter = new XMLWriter(stringWriter, outputFormat);
try {
xmlWriter.write(doc);
return stringWriter.toString();
} catch (IOException ex) {
return "";
}
} else {
return "";
}
} private static String converPath( String path ){
if(OSUtil.LIUNX.equals(System.getProperty("os.name"))){
path = OSUtil.convert2linuxPath(path) ;
System.out.println( "system is Linux , path conver to :" + path );
}
return path ;
} /**
* 创建xml格式的文件
* @param doc
* @param encoding
* @param strFileName
* @return
*/
public static boolean saveXMLDocumentToFile(Document doc, String encoding, String strFileName) {
boolean flag = false;
// 创建路径
strFileName = converPath(strFileName);
String strDir = FileNameUtil.extractFilePath(strFileName);
DirectoryUtil.forceDirectory(strDir); if (encoding == null || encoding.length() == 0) {
encoding = "UTF-8";
}
OutputFormat outputFormat = new OutputFormat();
outputFormat.setEncoding(encoding);
FileOutputStream fos = null;
XMLWriter xmlWriter = null;
try {
// FileWriter fileWriter = new FileWriter(strFileName);
// XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);//
// 不能解决UTF-8编码问题
fos = new FileOutputStream(strFileName);// 可解决UTF-8编码问题
xmlWriter = new XMLWriter(fos, outputFormat);
xmlWriter.write(doc);
flag = true;
} catch (IOException e) {
flag = false;
System.out.println("保存xml文件出错:" + e.getMessage());
e.printStackTrace();
} finally {
try {
if (xmlWriter != null) {
xmlWriter.flush();
}
if (fos != null) {
fos.flush();
}
if (xmlWriter != null) {
xmlWriter.close();
}
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
} /**
* 创建格式化过的xml格式的文件
* @param doc
* @param encoding
* @param strFileName
* @return
*/
public static boolean saveFormatXMLDocumentToFile(Document doc, String encoding,
String strFileName) {
boolean flag = false; // 创建路径
strFileName = converPath(strFileName);
String strDir = FileNameUtil.extractFilePath(strFileName) ;
DirectoryUtil.forceDirectory(strDir); if (encoding == null || encoding.length() == 0) {
encoding = "UTF-8";
}
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding(encoding);
FileOutputStream fos = null;
XMLWriter xmlWriter = null;
try{
fos = new FileOutputStream(strFileName);// 可解决UTF-8编码问题
xmlWriter = new XMLWriter(fos, outputFormat);
xmlWriter.write(doc);
flag = true;
}catch(IOException e){
flag = false;
}finally{
try {
xmlWriter.flush();
fos.flush();
xmlWriter.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
} }
return flag;
} public static void saveXMLDocumentToOutputStream(Document doc,
String encoding, OutputStream outputstream) throws IOException {
if (encoding == null || encoding.length() == 0) {
encoding = "UTF-8";
}
OutputFormat outputFormat = new OutputFormat();
outputFormat.setEncoding(encoding);
XMLWriter xmlWriter = new XMLWriter(outputstream, outputFormat);
xmlWriter.write(doc);
xmlWriter.close();
outputstream.close();
} public static Document loadXMLFile(String strFileName)
throws DocumentException {
SAXReader saxReader = new SAXReader();
saxReader.setValidation(false);
saxReader.setEntityResolver(new IgnoreDTDEntityResolver());
return saxReader.read(new File(OSUtil.convert2linuxPath(strFileName)));
} public static Document loadXMLInputstream(InputStream in){
SAXReader reader = new SAXReader();
try {
return reader.read(in);
} catch (DocumentException e) {
return null;
}
} /**
* 用于xml 与 xsl 的归并输出含处理指令的xml到out
* 处理指令指定了浏览器渲染的时候使用的xsl文件相对路径
*
* @author sun
*/
@SuppressWarnings("unchecked")
public static void outputXML(Document xmldoc, String xslname,
Writer out) throws Exception {
if (xslname != null) {
ProcessingInstruction pi = DocumentHelper
.createProcessingInstruction("xml-stylesheet", "href=\""
+ xslname + "\" type=\"text/xsl\"");
xmldoc.content().add(0, pi);
}
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty("encoding", "UTF-8"); transformer
.transform(new DocumentSource(xmldoc), new StreamResult(out));
out.flush();
out.close();
} /**
* 用于xml 与 xsl 的归并输出xml或html到out
* 输出html时,xsl名称不能为null
* @author
* @throws TransformerException
*/
public static void transformXml(Document xmldoc, String xslname,
Writer out) throws TransformerException{
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = xslname == null ? factory.newTransformer()
: factory.newTransformer(new StreamSource(xslname));
transformer.setOutputProperty("encoding", "UTF-8"); transformer.transform(new DocumentSource(xmldoc),
new StreamResult(out));
}
}
Java操作XML的工具类的更多相关文章
- 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!
转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...
- Java操作字符串的工具类
操作字符串的工具类 import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStre ...
- Java操作图片的工具类
操作图片的工具类: import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.a ...
- Java 操作jar包工具类以及如何快速修改Jar包里的文件内容
需求背景:写了一个实时读取日志文件以及监控的小程序,打包成了Jar包可执行文件,通过我们的web主系统上传到各个服务器,然后调用ssh命令执行.每次上传前都要通过解压缩软件修改或者替换里面的配置文件, ...
- Java操作XML的工具:JAXB
JavaArchitecture for XML Binding (JAXB) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向 ...
- java操作数组的工具类-Arrays
static int binarySearch(type[] a, type key) 使用二分搜索法来搜索key元素在数组中的索引:若a数组不包括key,返回负数.(该方法必须已按升序排列后调用). ...
- Java操作XML的JAXB工具
在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding). 利用这个工具很方便生成XML的tag和Java类的对应关系.参照网上 ...
- java里poi操作excel的工具类(兼容各版本)
转: java里poi操作excel的工具类(兼容各版本) 下面是文件内具体内容,文件下载: import java.io.FileNotFoundException; import java.io. ...
- Android学习笔记之数据的Sdcard存储方法及操作sdcard的工具类
FileService.java也就是操作sdcard的工具类: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
随机推荐
- C++标准库概述 [转]
C++标准库的所有头文件都没有扩展名. C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能.<cname>形式的标准头文件[<complex>例外]其内 ...
- HTTP(一) 连接管理
・HTTP是如何使用TCP连接的 HTTP传送一条报文时,以流的形式将报文数据内容通过一条打开的TCP连接按序传输. TCP收到数据流之后,由TCP/IP软件将数据流砍成被称作段的小数据块,并将段封装 ...
- github 多帐户使用
同一台电脑有2个github账号?咋办 比如一个公司账号一个个人账号. 私人账号如下: 邮箱example@126.com 账号:example 公司工作账号如下: work@xx.com 账号:my ...
- STM32 DFU -- Device Firmware Upgrade
DFU Class Requests Get Status The Host employs the DFU_GETSTATUS request to facilitate synchronizati ...
- 利用css中的border生成三角,兼容包括IE6的主流浏览器
1.生成四个不同颜色方向的梯形 #ladder{ width:20px; height:20px; border:10px solid; border-color:#ff3300 #0000ff #3 ...
- Java面试葵花宝典
面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面.抽象并不5. 打算了解全部问题,而6. 只是选择其中的一 ...
- 手游产品经理初探(六)粗糙的logo会给产品致命一击
假设你的游戏产品从logo的设计開始就不注重细节的话,那么你的产品将不会走多远! 我们把图片放大看: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1 ...
- MySQL 索引优化 btree hash rtree
一.MySQL索引类型 mysql里目前只支持4种索引分别是:full-text,b-tree,hash,r-tree b-tree索引应该是mysql里最广泛的索引的了,除了archive基本所有的 ...
- Android+Jquery Mobile学习系列(4)-页面跳转及参数传递
关于页面转场,这个必须得专门列出来说明一下,因为Jquery Mobile与普通的Web发开有一些区别,这个对于新手如果不了解的话,就会钻到死胡同.撸主前段时间就是很急躁地上手开发程序,结果在页面转场 ...
- 安装nodejs和grunt以后出现 /usr/bin/env: node: No such file or directory
安装完成以后需要执行此命令 sudo ln -s /usr/bin/nodejs /usr/bin/node