javaWEB项目中使用XSLT解析生成的XML文件
2013-05-03 13:33
756 查看
XSLT方式打开XML文件,在客户端运用时,
一可以编辑好XSLT文件,在XML文件导入XSLT文件就可以用浏览器打开:
二可以使用js打开:
但2种方式只支持IE5以上,包括谷歌等非IE浏览器不起作用。
现在需要在javaWEB程序中,在action类里使用XSLT解析XML文件并显示出来:
jsp页面直接用jquery-ajax异步请求调用到strugts2的action,显示时候不一定要新打开html页面,可以在div用innerHTML直接显示,会自动识别HTML表格标签等,这里不再写出来。
下面只写action类文件程序代码:
一可以编辑好XSLT文件,在XML文件导入XSLT文件就可以用浏览器打开:
<?xml-stylesheet type="text/xsl" href="xml.xsl"?>
二可以使用js打开:
<script type="text/javascript"> // Load XML var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cdcatalog.xml") // Load XSL var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("cdcatalog.xsl") // Transform document.write(xml.transformNode(xsl)) </script>
但2种方式只支持IE5以上,包括谷歌等非IE浏览器不起作用。
现在需要在javaWEB程序中,在action类里使用XSLT解析XML文件并显示出来:
jsp页面直接用jquery-ajax异步请求调用到strugts2的action,显示时候不一定要新打开html页面,可以在div用innerHTML直接显示,会自动识别HTML表格标签等,这里不再写出来。
下面只写action类文件程序代码:
/** * @return * @throws IOException * @throws SQLException * @throws SAXException * @throws ParserConfigurationException * @throws DocumentException * @throws TransformerException */ public void showXmlAndXslt() throws IOException, SQLException, SAXException, ParserConfigurationException, DocumentException, TransformerException{ HttpServletRequest request=ServletActionContext.getRequest(); HttpServletResponse response=ServletActionContext.getResponse(); response.setContentType("text/xml;charset=utf-8"); //(1)一定要在(2)的前面,不然会乱码 response.setCharacterEncoding("UTF-8"); //(2) response.setHeader("Cache-Control", "no-cache"); PrintWriter pw=response.getWriter(); String canshu1=request.getParameter("参数1"); String canshu2=request.getParameter("参数2"); JavBean javaBean=xmlService.showXML(canshu1, canshu2); Clob clob=javaBean.getClobXml(); //CLOB转String Reader inStreamDoc = clob.getCharacterStream(); char[] tempDoc = new char[(int) clob.length()]; inStreamDoc.read(tempDoc); inStreamDoc.close(); String msgXML= new String(tempDoc); //msgContent="<?"+"xml-stylesheet"+" type=\"text/xsl\""+" href=\"xml.xsl\""+" ?>"+msgContent; //保存到D盘生成xml文件 BufferedWriter bw = null; OutputStreamWriter osw = null; FileOutputStream fos = null; File xmlFile = new File("D:/user.xml"); fos = new FileOutputStream(xmlFile); osw = new OutputStreamWriter(fos,"GBK");//指定编码,防止写中文乱码 bw = new BufferedWriter(osw); //对xml输出格式化 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); XMLWriter writer = new XMLWriter(bw, format); Document document=DocumentHelper.parseText(msgXML); writer.write(document); //writer.toString(); //writer.flush(); writer.close(); //一定要加,不然写不到xml文件,为0kb //XSLT解析xml //1.此种是在前面一步保存到硬盘D盘,对xml输出格式化的前提下: SAXReader saxReader=new SAXReader(); Document document1=saxReader.read(new File("D:\\user.xml")); //dom4j读取xml文件转换为Document //2.此种是不需要保存到硬盘的前提下:(则前一步的保存D盘生成xml文件和对xml输出格式化可省略) ByteArrayInputStream is = new ByteArrayInputStream(msgXML.getBytes("utf-8")); Document document1=saxReader.read(is); TransformerFactory factory=TransformerFactory.newInstance(); StreamSource xsl=new StreamSource("D:\\xml.xsl"); Transformer transformer=factory.newTransformer(xsl); Properties props=transformer.getOutputProperties(); props.setProperty(OutputKeys.ENCODING,"GBK"); props.setProperty(OutputKeys.METHOD, "html"); props.setProperty(OutputKeys.VERSION, "6.0"); transformer.setOutputProperties(props); DocumentSource docSource=new DocumentSource(document1); StringWriter strWriter=new StringWriter(); StreamResult docResult=new StreamResult(strWriter); transformer.transform(docSource, docResult); StringBuilder sb=new StringBuilder(); sb.append(strWriter); pw.print(sb.toString()); pw.flush(); pw.close(); }
相关文章推荐
- Java乔晓松-使用SAX,DOM,pull解析XML文件以及pull解析生成xml文件
- 在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,根据hbm文件自动生成pojo和数据库脚本
- Java学习笔记(2)----Web项目中解析XML文件
- 【Java】Eclipse手动生成JavaWeb项目web.xml文件
- 利用myeclipse生成的java web项目中没有web.xml文件怎么办
- 在使用Mybatis框架的JavaWeb项目中通过Mybatis Generator逆向工程自动生成Java类文件
- 在Java中使用dom4j来解析及生成xml文件
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- SEO_ASP.net SEO优化(包含URL地址重写\viewState移动和压缩至服务器\SEO信息XML生成_根据URL地址重写文件)\web网站内容压缩 源码公开.本人授权可使用于商业项目。
- 在tomcat运行找不到xml,class ,项目中的java文件没有在WEB-INF\classes中生成class文件
- eclipse 项目中的java文件没有在WEB-INF目录下的classes中 生成相对应的编译后的类
- WEB项目tomcat容器下 java访问自定义的资源文件xml
- Java&Xml教程(六)使用JDOM解析XML文件
- 使用XML序列化器生成XML文件和利用pull解析XML文件
- 【maven】pom.xml文件没错,但是项目有小红叉,Problems中可以看到错误:“Dynamic Web Module 3.0 requires Java 1.6 or newer.”
- 利用eclipse新建的java web项目没有部署描述符web.xml文件怎么办?
- 使用Java解析xml文件为json格式
- 使用Java提供的JAXB生成和解析XML
- 对xsd文件的操作 生成java实体并解析生成的xml
- WEB项目web.xml文件中classpath: 跟classpath*:使用的区别