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 ...
随机推荐
- OC: NSString、NSArray、NSNumber
数组参考: 参考1 参考2 参考3 //字符串 //1.获取字符串的长度: //表情符号最少占两个字节 NSString * s = @"中文字符串
- Release 版本和 Debug 版本
什么是 Release 版本.Debug 版本? bug-缺陷,程序故障.而debug指的是排除缺陷,显然这个模式是面向开发者的. 而release是满足发布所用. Debug 和 Release,在 ...
- ActiveMQ讯息传送机制以及ACK机制详解
[http://www.ylzx8.cn/ruanjiangongcheng/software-architecture-design/11922.html] AcitveMQ:消息存储和分发组件,涉 ...
- WSO2 Stratos手册
WSO2 Stratos是最完整的企业级cloud solution,提供了一个开放的PaaS平台,相比于其他的PaaS平台来说,Stratos支持更多核心的服务.Stratos2.0对那些想从异构环 ...
- jquery单选框 复选框表格高亮 选中
单选框: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/T ...
- Android Studio Push rejected: Push to origin/Alpha1.0 was rejected
android studio git 右键项目, git pull 刷新选择Alpha1.0同步后,再commit and push
- Qt中的 Size Hints 和 Size Policies
sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeH ...
- MySQL通配符过滤
在WHERE后使用LIKE操作符能够进行通配符过滤: products表例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1eWluZ18xM ...
- jQuery.FlexiGrid使用总结
经过对FlexiGrid的大量使用,及时不时琢磨下其代码,对她的脾性有了一定的了解,是该做总结的时候了. 一.FlexiGrid下载 1.原版代码 最近Paulo P. Marinas对FlexiGr ...
- Swift用UIBezierPath来画圆角矩形、自定义多路径图形
最好的特点就是可以自定义路径,设置圆角和描边都很方便,以下为代码和效果,均在playground中实现 1.首先实现一个圆角矩形,并对此路径描边,为其绘制一个轮廓. 1 2 3 4 5 6 7 8 9 ...