- 浏览: 138718 次
- 性别:
- 来自: 北京
最新评论
-
安然格思:
太久远了,文本都无法显示了
jbpm3.1中文文档 .chm -
zht110227:
这个??如此简单
onchange事件顿悟 -
xdw1626:
谢谢了,找07的
asktom 合订本集合 -
by5739:
- -这是3.0的文档吧...好像我用3.1.4...都是通过 ...
jbpm3.1中文文档 .chm -
lovefly_zero:
太强了 太感谢了
B/S开发中常用的javaScript
今天在论坛上看到一位朋友在利用xml+xsl生成html的时候,出现了乱码,在他代码的基础上做了下修改,解决了乱码问题。不知道是不是利用这种方法只能生成UTF-8的格式。
view plaincopy to clipboardprint?
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.Document;
/**
* <p>
* Title:将xml+xsl生成html
* </p>
*
* <p>
* Copyright: 转载请注明出处http://blog.csdn.net/sunyujia/
* </p>
*
* @author 孙钰佳
* @main sunyujia@yahoo.cn
* @date Jun 21, 2008 12:40:38 PM
*/
public class Test {
public static String buildHtml(String xml, String xsl) throws Exception {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();
Document xmlDoc = builder
.parse(new ByteArrayInputStream(xml.getBytes()));
Source xmlSource = new DOMSource(xmlDoc);
StreamSource xslSource = new StreamSource(new ByteArrayInputStream(xsl
.getBytes()));
TransformerFactory tf = TransformerFactory.newInstance();
Templates transformation = tf.newTemplates(xslSource);
Transformer transformer = transformation.newTransformer();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
StreamResult result = new StreamResult(bos);
transformer.transform(xmlSource, result);
return new String(bos.toByteArray(), "UTF-8");// 指定UTF-8解决乱码问题
//如果这里不指定UTF-8的话需指定xsl为GBK方式输出
//<xsl:output method="html" encoding="GBK" indent="yes"/>
//<xsl:template match="/">
}
public static String readFileToString(File file) throws IOException {
StringBuffer sb = null;
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(file));
sb = new StringBuffer();
for (String line; (line = in.readLine()) != null;) {
sb.append(line + "\r\n");
}
} finally {
if (in != null)
in.close();
}
return sb.toString();
}
public static void main(String[] args) throws Exception {
String xmlStr = readFileToString(new File(Test.class.getResource(
"test.xml").getFile()));
String xslStr = readFileToString(new File(Test.class.getResource(
"test.xsl").getFile()));
String html = buildHtml(xmlStr, xslStr);
System.out.println(html);
}
}
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.Document;
/**
* <p>
* Title:将xml+xsl生成html
* </p>
*
* <p>
* Copyright: 转载请注明出处http://blog.csdn.net/sunyujia/
* </p>
*
* @author 孙钰佳
* @main sunyujia@yahoo.cn
* @date Jun 21, 2008 12:40:38 PM
*/
public class Test {
public static String buildHtml(String xml, String xsl) throws Exception {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();
Document xmlDoc = builder
.parse(new ByteArrayInputStream(xml.getBytes()));
Source xmlSource = new DOMSource(xmlDoc);
StreamSource xslSource = new StreamSource(new ByteArrayInputStream(xsl
.getBytes()));
TransformerFactory tf = TransformerFactory.newInstance();
Templates transformation = tf.newTemplates(xslSource);
Transformer transformer = transformation.newTransformer();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
StreamResult result = new StreamResult(bos);
transformer.transform(xmlSource, result);
return new String(bos.toByteArray(), "UTF-8");// 指定UTF-8解决乱码问题
//如果这里不指定UTF-8的话需指定xsl为GBK方式输出
//<xsl:output method="html" encoding="GBK" indent="yes"/>
//<xsl:template match="/">
}
public static String readFileToString(File file) throws IOException {
StringBuffer sb = null;
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(file));
sb = new StringBuffer();
for (String line; (line = in.readLine()) != null;) {
sb.append(line + "\r\n");
}
} finally {
if (in != null)
in.close();
}
return sb.toString();
}
public static void main(String[] args) throws Exception {
String xmlStr = readFileToString(new File(Test.class.getResource(
"test.xml").getFile()));
String xslStr = readFileToString(new File(Test.class.getResource(
"test.xsl").getFile()));
String html = buildHtml(xmlStr, xslStr);
System.out.println(html);
}
}
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="GBK"?>
<?xml-stylesheet Type="text/xsl" href="test.xsl"?>
<syj>
<test>测试</test>
</syj>
<?xml version="1.0" encoding="GBK"?>
<?xml-stylesheet Type="text/xsl" href="test.xsl"?>
<syj>
<test>测试</test>
</syj>
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="GBK"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
</head>
<body>
<xsl:value-of select="syj/test"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="GBK"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
</head>
<body>
<xsl:value-of select="syj/test"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet> 20080713追加
后来发现有include文件的情况,修改代码如下。
view plaincopy to clipboardprint?
public static String buildHtml(String xml, String xsl, final String basePath)
throws Exception {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();
Document xmlDoc = builder.parse(new InputSource(new StringReader(xml)));
Source xmlSource = new DOMSource(xmlDoc);
StreamSource xslSource = new StreamSource(new StringReader(xsl));
TransformerFactory tf = TransformerFactory.newInstance();
URIResolver uriReslover = new URIResolver() {
public Source resolve(String href, String base)
throws TransformerException {
try {
//当遇到include文件的时候会执行此方法
// return new StreamSource(new StringReader(
// readFileToString(new URL(fileName))));
return null;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
};
tf.setURIResolver(uriReslover);
Templates transformation = tf.newTemplates(xslSource);
Transformer transformer = transformation.newTransformer();
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
transformer.transform(xmlSource, result);
return sw.toString();
}
原文网址:http://blog.csdn.net/sunyujia/archive/2008/06/21/2572479.aspx
发表评论
-
Class-based Javascript analog clock
2009-12-11 23:51 984var analogClock = function (div ... -
Javascript Array shuffle in-place
2009-12-11 23:46 1068It works with Array types. The ... -
Javascript Loader
2009-12-11 23:43 1107// Core functions for Blackbir ... -
a script that is able to load a remote script located in other server anytime it
2009-12-11 23:20 1075<script type="text/java ... -
右鍵事件控制
2009-04-12 00:47 869詳細見附件 -
用Ajax做的一棵无限级目录树
2009-03-17 15:52 1905转载:快乐笛子的博客(http://www.happyshow ... -
Javascript利用闭包循环绑定事件
2008-10-15 12:21 1009<!DOCTYPE html PUBLIC " ... -
javascript获取本机ip地址 mac地址
2008-10-09 12:40 7254<HTML> <HEAD&g ... -
JavaScript渐变效果
2008-09-07 23:59 1758<!DOCTYPE html PUBLIC " ... -
QQ窗口震动效果
2008-09-07 22:19 1290<img id="win" sty ... -
select 按键 提示
2008-08-28 00:06 1535<!DOCTYPE HTML PUBLIC " ... -
firebug-lite源代码
2008-07-26 13:29 2688firebug-lite源代码包含的三个很强的js文件 -
ShowModalDialog函数的功能
2008-07-25 12:27 1120ShowModalDialog函数的功能:打开一个子窗口,并且 ... -
利用Word打印报表
2008-07-17 18:20 1076利用Word打印报表 -
ActionScript3[1].0_Cookbook.rar
2008-07-12 20:34 812ActionScript3[1].0_Cookbook.rar ... -
JS的正则表达式
2008-07-02 14:02 820//校验是否全由数字组成 [code] function is ... -
字符串 每三位 逗号 分隔
2008-07-01 09:51 1894function formatNum(num,digit)// ... -
ajax利用post传递大量数据解决方法
2008-06-26 18:36 3276将url和参数分开解决具体方法如下: var resour ... -
类似于Java日期格式化的JavaScript实现
2008-06-25 13:15 16561/**//** 2@author:Pancras 3 ... -
『工具手册』正则表达式
2008-06-21 09:17 806前言 正则表达式 ...
相关推荐
xml+xsl+css html网页 xml+xsl+css html网页 xml+xsl+css html网页 xml+xsl+css html网页 xml+xsl+css html网页 xml+xsl+css html网页
在这个个人网页项目中,XSLT可能被用来根据XML数据生成不同的页面视图,使页面布局和设计符合预期。 CSS(Cascading Style Sheets)是用于控制网页元素样式和布局的样式表语言。在XML+XSL的项目中,CSS用于美化由...
4. 使用XSLT处理器应用XSL转换:这一步将XML和XSL结合,生成最终的HTML文件,可以在浏览器中查看。 5. 部署和测试:在不同设备和浏览器上测试简历的显示效果,确保兼容性和用户体验。 这个项目对于学习XML、CSS和...
总之,XML+XSL/FO+FOP技术栈提供了一种强大的方法,将结构化的XML数据转换为专业品质的PDF文档,适合于各种业务场景,如自动化报表生成、电子出版物制作等。熟悉这一流程对于IT从业者,尤其是从事数据处理、文档管理...
### WEB图形格式SVG及基于XML+XSL的动态生成技术 #### SVG:开启网络图形新时代 SVG(可伸缩矢量图形)作为一种新兴的网络图形格式,正逐步改变着网络图像的呈现方式。与传统的位图格式(如JPEG、GIF)相比,SVG...
5. **应用转换**:最后,使用支持XSLT的工具或编程语言(如Java、Python等)将XML文档和XSLT模板结合,执行转换生成HTML或其他格式的输出。 通过这样的过程,我们可以将复杂、结构化的XML数据转化为易于理解和操作...
在HTML页面中,我们可以使用JavaScript来加载XML和XSL文件,然后应用XSL转换得到HTML,最后使用DOM操作来实现树形目录的交互功能。以下是一个简单的JavaScript示例: ```javascript function loadTree() { var xhr...
在实际应用中,我们可以使用XML解析器(如Java的DOM或SAX解析器)读取XML文档,然后结合XSLT处理器(如Saxon或Xalan)和XSL样式表进行转换,生成HTML页面供浏览器展示。例如,`test.xml`可能是包含结构化数据的XML...
在浏览器中,当一个XML文档与相应的XSL样式表一起加载时,浏览器会根据XSLT规则解析XML,并生成新的HTML,从而实现动态的、富于表现力的页面效果。 **源码与工具** 在标签中提到的“源码”可能指的是XML和XSLT的源...
XML是一种标记语言,用于结构化地描述数据,而XSL则用于转换XML文档的结构,以生成不同格式的输出,如HTML、PDF或纯文本。 XML的基本概念: 1. **结构化数据**:XML通过自定义的标签来描述数据的结构和内容,允许...
- **输出方法**:XSLT支持多种输出方法,如HTML、XML或文本,通过`<xsl:output>`元素设置。 4. 示例代码: - 一个简单的XML文档可能如下所示: ```xml <?xml version="1.0" encoding="UTF-8"?> <author>...
Java XML、XSL 和 HTML 文件转换技术详解 本文档主要讲解了 Java 中的 XML、XSL 和 HTML 文件转换技术。通过对 Java 代码的分析,我们可以了解到如何将 XML 文件转换为 HTML 文件,并了解到 XSL 模板的应用。 首先...
Java XML、XSL、HTML 文件转换...Java XML、XSL、HTML 文件转换技术是软件开发中的一种常见技术,广泛应用于数据交换、文档生成等领域。了解该技术可以帮助开发人员更好地处理 XML 和 XSL 文件,提高开发效率和质量。
总的来说,XML和XSL的组合提供了一种强大且灵活的方法,用于生成动态网页和处理结构化数据。它们不仅在企业级应用中发挥着重要作用,也在Web服务、数据集成和跨平台通信等领域有着广泛应用。理解XML的标准化和XSL的...
通过XSL,我们可以定义XML数据如何被呈现出来,例如生成HTML菜单。下面是一个简单的XSL示例,将上面的XML转换为HTML菜单: ```xml <xsl:stylesheet version="1.0" xmlns:xsl=...
另一方面,XSL(Extensible Stylesheet Language)是用来转换XML文档的样式表语言,尤其是XSLT(XSL Transformations),它是XSL的一部分,专门用于将XML数据转换成其他格式,如HTML、PDF或简单的文本。 XML转换XSL...
总结起来,这个"treemenu"项目展示了XML和XSL的强大结合,通过XML结构化存储菜单数据,XSLT动态生成HTML结构,实现了一个灵活且易于维护的无限级树形菜单系统。对于任何需要构建复杂导航系统的开发者来说,这都是一...
- **加载XML和XSL文件**:使用`CreateObject`创建DOM对象,并加载XML和XSL文件。 - **应用XSLT转换**:调用`transformNode`方法应用XSLT转换。 - **输出HTML文件**:将转换后的HTML文本写入指定的文件中。 #### ...
通过XSLT,1.xsl会根据其规则对1.xml进行解析,生成一个新的结构或样式,这可能是用于网页展示的HTML。 XSLT的工作原理是通过模板匹配。模板定义了当遇到特定的XML元素时如何处理。例如,如果我们有如下的XML元素:...
6.6.4 sendredirect()和forward()方法的区别 238 6.7 小结 239 第7章 web应用程序的部署 240 7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet...