在java代码中用xslt处理xml文件
java处理xml文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder; import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.DocumentResult;
import org.dom4j.io.DocumentSource;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Jom4jForXmltoXslt { /**
* 利用xslt文件转换xml
* @author Administrator
* @parame document,styleSheet
*/
public static Document transformDocument(Document document,File styleSheet)
throws TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(styleSheet)); DocumentSource source = new DocumentSource(document);
DocumentResult result = new DocumentResult();
transformer.transform(source, result); Document transformedDoc = result.getDocument(); return transformedDoc;
} /**
* 读取需要转换的xml文件
* @return Document
* @throws UnsupportedEncodingException
* @throws FileNotFoundException
*/
public Document getRoleXML() throws UnsupportedEncodingException, FileNotFoundException {
InputStream is=null;
URL url=this.getClass().getClassLoader().getResource("resources.xml");
if(url==null) return null;
String path = url.getFile();
path = URLDecoder.decode(path,"UTF-8");
is = new FileInputStream(new File(path));
System.out.println("读到的menuConfig.xml位置在:"+path);
SAXReader reader = new SAXReader(); try {
return reader.read(is);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
} public static void main(String args[]) throws IOException {
try { Document doc = new Jom4jForXmltoXslt().getRoleXML();
Document resultDoc = Jom4jForXmltoXslt.transformDocument(doc, new File("transfer-menu-before.xslt")); OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); XMLWriter writer = new XMLWriter(new FileWriter(new File("output.xml")),format);
writer.write(resultDoc);
writer.close();
System.out.println("用xslt转换xml文件成功!"); } catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
在java代码中用xslt处理xml文件的更多相关文章
- 使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置
1.使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置 2.上代码:在resources目录下新建:generatorConfiguration.xml文 ...
- Spring MVC框架下在java代码中访问applicationContext.xml文件中配置的文件(可以用于读取配置文件内容)
<bean id="propertyConfigurer" class="com.****.framework.core.SpringPropertiesUtil& ...
- java代码用dom4j解析xml文件的简单操作
时间: 2016/02/17 目标:为telenor的ALU Femto接口写一个采集xml文件并解析出locationName标签里的值,然后更新到数据库中. 从网上搜了下,有四种常用的解析xml的 ...
- 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)
原文:分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要) XML文件 <?xml version="1.0"?> <student ...
- JAVA中通过Jaxp操作XML文件基础
Java中有多种方式操作XML文件,目前讲一讲以SUN公司提供的DocumentBuilderFactory工厂类对象操作XML. 使用XML基本操作就是需要CRUD(增删改查),那么首先通过一个查询 ...
- Delphi调用JAVA的WebService上传XML文件(XE10.2+WIN764)
相关资料:1.http://blog.csdn.net/luojianfeng/article/details/512198902.http://blog.csdn.net/avsuper/artic ...
- 如何使用Javascript XSLT 处理XML文件(支持Firefox)
最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器.而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX ...
- 手把手教你如何把java代码,打包成jar文件以及转换为exe可执行文件
1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有不爽.此篇博客教你如何方便快捷地把java代码,打包成jar文件以 ...
- 在java代码中,用xslt处理xml文件
http://blog.csdn.net/zhou_lei/article/details/2661735 ********************************************** ...
随机推荐
- rpx单位与移动设备分辨率
移动设备的分辨率与rpx 不是所有的单位都适合用rpx 文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论
- MySQL双主如何解决主键冲突问题
搭建了个双主,突然想到如果表设置了自增主键的话,当业务同时向双库中插入一条数据,这时候情况是什么样子的呢? 比如:主库A和主库B上的一个表数据为: 12 'ninhao' .当业务同时写入数据后主库A ...
- SettingsMyEclipse
迁移时间--2017年5月20日10:39:42 Author:Marydon-----------------------------------MyEclipse单独设置项---------- ...
- Knockout.js 数据验证之插件版和无插件版
本文我们将介绍使用 Knockout.js 实现一些基本的数据验证.就如我们在标题里提到的,我们会使用两种方法来创建数据验证方法. 使用自定义方法,不需要任何插件 最简单的方法是使用已有的插件 如果你 ...
- 类的专有方法(__init__)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.cnblogs.com/zyxstar2003/archive/2011/03/21/ ...
- 全栈JavaScript之路(十三)了解 ElementTraversal 规范
支持Element Traversal 规范的浏览器有IE 9+.Firefox 3.5+.Safari 4+.Chrome 和Opera 10+. 对于元素间的空格,在IE9之前.都不会返回文档节点 ...
- Javascript中的数据类型知多少
JavaScript 是一种弱类型或者说动态语言.这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定.这也意味着你可以使用同一个变量保存不同类型的数据 根据ECMAScript 5. ...
- HDUOJ---2955 Robberies
Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- Windows驱动 INF文件
参考一:百度百科 参考二:INF文件的节 参考三:wikipedia 参考四:MSDN: INF File INF文件的节 INF文件是一个文本文件,由许多按层次结构排列的节组成,他们以方括号中的节名 ...
- Dynamic DMA mapping Guide
一.前言 这是一篇指导驱动工程师如何使用DMA API的文档,为了方便理解,文档中给出了伪代码的例程.另外一篇文档dma-api.txt给出了相关API的简明描述,有兴趣也可以看看那一篇,这两份文档在 ...