开发者社区> 技术小哥哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java操作XML的工具类

简介:
+关注继续查看

 

复制代码
  1 import java.io.File;
  2 import java.io.FileOutputStream;
  3 import java.io.IOException;
  4 import java.io.InputStream;
  5 import java.io.OutputStream;
  6 import java.io.StringWriter;
  7 import java.io.Writer;
  8 
  9 import javax.xml.transform.Transformer;
 10 import javax.xml.transform.TransformerException;
 11 import javax.xml.transform.TransformerFactory;
 12 import javax.xml.transform.stream.StreamResult;
 13 import javax.xml.transform.stream.StreamSource;
 14 
 15 import org.dom4j.Document;
 16 import org.dom4j.DocumentException;
 17 import org.dom4j.DocumentHelper;
 18 import org.dom4j.ProcessingInstruction;
 19 import org.dom4j.io.DocumentSource;
 20 import org.dom4j.io.OutputFormat;
 21 import org.dom4j.io.SAXReader;
 22 import org.dom4j.io.XMLWriter;
 23 
 24 public class XMLUtil {
 25     /**
 26      * 以编码为UTF-8的方式返回xml
 27      * @param doc Document
 28      * @return String
 29      */
 30     public static String toString(Document doc) {
 31         return toString(doc, "UTF-8");
 32     }
 33 
 34     /**
 35      * 以指定编码格式返回xml
 36      * @param doc  Document
 37      * @param encoding String
 38      * @return String
 39      */
 40     public static String toString(Document doc, String encoding) {
 41         if (null != doc) {
 42             OutputFormat outputFormat = new OutputFormat();
 43             outputFormat.setEncoding(encoding);
 44             StringWriter stringWriter = new StringWriter();
 45             XMLWriter xmlWriter = new XMLWriter(stringWriter, outputFormat);
 46             try {
 47                 xmlWriter.write(doc);
 48                 return stringWriter.toString();
 49             } catch (IOException ex) {
 50                 return "";
 51             }
 52         } else {
 53             return "";
 54         }
 55     }
 56     
 57     private static String converPath( String path ){
 58         if(OSUtil.LIUNX.equals(System.getProperty("os.name"))){
 59             path = OSUtil.convert2linuxPath(path) ;
 60             System.out.println( "system is Linux , path conver to :" + path );
 61         }
 62         return path ;
 63     }
 64     
 65     
 66     /**
 67      * 创建xml格式的文件
 68      * @param doc
 69      * @param encoding
 70      * @param strFileName
 71      * @return
 72      */
 73     public static boolean saveXMLDocumentToFile(Document doc, String encoding, String strFileName) {
 74         boolean flag = false;
 75         // 创建路径
 76         strFileName = converPath(strFileName);
 77         String strDir = FileNameUtil.extractFilePath(strFileName);
 78         DirectoryUtil.forceDirectory(strDir);
 79 
 80         if (encoding == null || encoding.length() == 0) {
 81             encoding = "UTF-8";
 82         }
 83         OutputFormat outputFormat = new OutputFormat();
 84         outputFormat.setEncoding(encoding);
 85         FileOutputStream fos = null;
 86         XMLWriter xmlWriter = null;
 87         try {
 88             // FileWriter fileWriter = new FileWriter(strFileName);
 89             // XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);//
 90             // 不能解决UTF-8编码问题
 91             fos = new FileOutputStream(strFileName);// 可解决UTF-8编码问题
 92             xmlWriter = new XMLWriter(fos, outputFormat);
 93             xmlWriter.write(doc);
 94             flag = true;
 95         } catch (IOException e) {
 96             flag = false;
 97             System.out.println("保存xml文件出错:" + e.getMessage());
 98             e.printStackTrace();
 99         } finally {
100             try {
101                 if (xmlWriter != null) {
102                     xmlWriter.flush();
103                 }
104                 if (fos != null) {
105                     fos.flush();
106                 }
107                 if (xmlWriter != null) {
108                     xmlWriter.close();
109                 }
110                 if (fos != null) {
111                     fos.close();
112                 }
113             } catch (IOException e) {
114                 e.printStackTrace();
115             }
116         }
117         return flag;
118     }
119     
120     /**
121      * 创建格式化过的xml格式的文件
122      * @param doc
123      * @param encoding
124      * @param strFileName
125      * @return
126      */
127     public static boolean saveFormatXMLDocumentToFile(Document doc, String encoding,
128             String strFileName)  {
129         boolean flag = false;
130         
131         // 创建路径
132         strFileName = converPath(strFileName);
133         String strDir = FileNameUtil.extractFilePath(strFileName) ;
134         DirectoryUtil.forceDirectory(strDir);
135 
136         if (encoding == null || encoding.length() == 0) {
137             encoding = "UTF-8";
138         }
139         OutputFormat outputFormat = OutputFormat.createPrettyPrint();
140         outputFormat.setEncoding(encoding);
141         FileOutputStream fos = null;
142         XMLWriter xmlWriter  = null;
143         try{
144             fos = new FileOutputStream(strFileName);// 可解决UTF-8编码问题
145             xmlWriter = new XMLWriter(fos, outputFormat);
146             xmlWriter.write(doc);
147             flag = true;
148         }catch(IOException e){
149             flag = false;
150         }finally{
151             try {
152                 xmlWriter.flush();
153                 fos.flush();
154                 xmlWriter.close();
155                 fos.close();
156             } catch (IOException e) {
157                 e.printStackTrace();
158             }
159             
160         }
161         return flag;
162     }
163     
164     public static void saveXMLDocumentToOutputStream(Document doc,
165             String encoding, OutputStream outputstream) throws IOException {
166         if (encoding == null || encoding.length() == 0) {
167             encoding = "UTF-8";
168         }
169         OutputFormat outputFormat = new OutputFormat();
170         outputFormat.setEncoding(encoding);
171         XMLWriter xmlWriter = new XMLWriter(outputstream, outputFormat);
172         xmlWriter.write(doc);
173         xmlWriter.close();
174         outputstream.close();
175     }
176 
177     public static Document loadXMLFile(String strFileName)
178             throws DocumentException {
179         SAXReader saxReader = new SAXReader();
180         saxReader.setValidation(false);
181         saxReader.setEntityResolver(new IgnoreDTDEntityResolver()); 
182         return saxReader.read(new File(OSUtil.convert2linuxPath(strFileName)));
183     }
184 
185     public static Document loadXMLInputstream(InputStream in){
186         SAXReader reader = new SAXReader();
187         try {
188             return reader.read(in);
189         } catch (DocumentException e) {
190             return null;
191         }
192     }
193     
194     /**
195      * 用于xml 与 xsl 的归并输出含处理指令的xml到out
196      * 处理指令指定了浏览器渲染的时候使用的xsl文件相对路径
197      * 
198      * @author sun
199      */
200     @SuppressWarnings("unchecked")
201     public static void outputXML(Document xmldoc, String xslname,
202             Writer out) throws Exception {
203         if (xslname != null) {
204             ProcessingInstruction pi = DocumentHelper
205                     .createProcessingInstruction("xml-stylesheet", "href=\""
206                             + xslname + "\" type=\"text/xsl\"");
207             xmldoc.content().add(0, pi);
208         }
209         TransformerFactory factory = TransformerFactory.newInstance();
210         Transformer transformer = factory.newTransformer();
211         transformer.setOutputProperty("encoding", "UTF-8");
212 
213         transformer
214                 .transform(new DocumentSource(xmldoc), new StreamResult(out));
215         out.flush();
216         out.close();
217     }
218 
219     /**
220      * 用于xml 与 xsl 的归并输出xml或html到out
221      * 输出html时,xsl名称不能为null
222      * @author
223      * @throws TransformerException 
224      */
225     public static void transformXml(Document xmldoc, String xslname,
226             Writer out) throws TransformerException{
227         TransformerFactory factory = TransformerFactory.newInstance();
228         Transformer transformer = xslname == null ? factory.newTransformer()
229                 : factory.newTransformer(new StreamSource(xslname));
230         transformer.setOutputProperty("encoding", "UTF-8");
231 
232         transformer.transform(new DocumentSource(xmldoc),
233                 new StreamResult(out));
234     }
235 }
复制代码

 


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5762605.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
WSDL2Java操作指南
1. 安装JDK1.5, 配置系统环境变量:     下载安装JDK后, 设置环境变量:     JAVA_HOME=C:\Program Files\Java\jdk1.5.0_02     Path=%Path%;%JAVA_HOME%\bin(这里的%Path%指你系统已经有的一系列配置)     CLASSPATH=%JAVA_HOME%\lib  2. 下载axis,
1142 0
Java神鬼莫测之MyBatis实现分页全过程(三)
Java神鬼莫测之MyBatis实现分页全过程(三)
91 0
Java数据结构——————双向链表(详细图解,增删改查详细实现)(下)
Java数据结构——————双向链表(详细图解,增删改查详细实现)(下)
57 0
Java数据结构——————双向链表(详细图解,增删改查详细实现)(上)
目录 1.什么是双向链表? 2.双向链表的基本功能和结构 3.双向链表基本功能详细图解代码实现 1.清空,判空,获得长度功能实现 2.获取第一个元素和最后一个元素 3.添加元素t 4.向指定位置i插入元素t 5.获取指定位置i处的元素 6.找到元素t第一次出现的位置 7.删除位置i的元素,并返回该元素
64 0
Java数据结构-------单链表(图解增删改查详细实现,附反转链表实现)(下)
Java数据结构-------单链表(图解增删改查详细实现,附反转链表实现)(下)
40 0
Java数据结构-------单链表(图解增删改查详细实现,附反转链表实现)(上)
目录 1.什么是链表? 2.单链表的基本功能和结构 3.单链表基本功能代码具体实现 1.清空链表,获取链表长度,判断链表是否为空 2.获取指定位置的元素 3.像链表中添加元素t 4.向指定位置i处插入元素t 5.删除指定位置i处的元素,并返回该元素 6.查找元素第一次出现的位置 7.反转链表
46 0
Java数据结构————顺序表(增删改查详细实现)
目录 1.什么是顺序表 2.顺序表的基本功能和结构 3.顺序表基本功能的实现和解析 1.判断线性表是否为空 2.获取指定位置的元素 3.向线性表表添加元素 4.在位置i处插入元素 4.删除指定位置的元素,并返回该元素 5.查找t第一次出现的位置 6.手动扩容方法
54 0
3D接雨水2(leetcode)——Java实现(又是想上吊的一天)
给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。以下的内容回答你的疑惑和困难。
323 0
删除链表中的节点(leetcode)细思极恐——Java实现
编写一个函数,用于删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。 题目数据保证需要删除的节点 不是末尾节点 。
55 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java基础入门(四)-泛型、反射、注解
立即下载
Java开发手册1.2.0
立即下载
Java开发手册1.0.0版
立即下载