xml转为html
2010-05-04 13:29
依据一定的格式把xml转为html,要用到xsl。xsl语法可以在网上找详细资料。现贴出代码:
java类(我是通过一个http去访问的)
package web;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
public class XmlToHtmlAction extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String xmlContent = this.getFileContent("F:/szworkspace/play/WebRoot/xsl/cd_catalog.xml");
String xslContent = this.getFileContent("F:/szworkspace/play/WebRoot/xsl/cd_catalog.xsl");
/*xslContent = "<?xml version=\"1.0\" ?>";
xslContent +="<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/TR/WD-xsl\">";
xslContent +="</xsl:stylesheet>";*/
try{
String html = this.xmlToHtml(xslContent, xmlContent);
response.getWriter().print(html);
}catch(Exception e){
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
/**
* @desc 获得文件内容,可能会有编码问题
* @param fileName 文件路径
* */
private String getFileContent(String fileName) {
StringBuilder strContent = new StringBuilder();
BufferedReader bis = null;
try {
File file = new File(fileName);
bis = new BufferedReader(new InputStreamReader(new FileInputStream(
file),"GBK"));
String line = null;
while ((line = bis.readLine()) != null) {
strContent.append(line).append("\n");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return strContent.toString();
}
/**
* @desc 将xml字符串转换为html
* @param bosXslSou xsl内容
* @param bosXmlSou xml内容
* */
private String xmlToHtml(String xslContent, String xmlContent) throws TransformerException {
StringReader bosXslSou = new StringReader(xslContent);
StringReader bosXmlSou = new StringReader(xmlContent);
TransformerFactory tFactory = TransformerFactory.newInstance();
// 获取xsl的字符流
Transformer transformer = tFactory.newTransformer(new javax.xml.transform.stream.StreamSource(bosXslSou));
Properties properties = transformer.getOutputProperties();
properties.setProperty(OutputKeys.ENCODING,"GBK");
properties.setProperty(OutputKeys.METHOD, "html");
transformer.setOutputProperties(properties);
ByteArrayOutputStream bosRes = new ByteArrayOutputStream();
transformer.transform(new javax.xml.transform.stream.StreamSource(bosXmlSou),new javax.xml.transform.stream.StreamResult(bosRes));
String sHtmlCont = new String(bosRes.toString());
return sHtmlCont;
}
}
xsl文件:
<?xml version="1.0" encoding="GBK"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="GBK"/>
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="CATALOG/CD">
<tr>
<td>
<xsl:value-of select="TITLE" />
</td>
<td>
<xsl:value-of select="ARTIST" />
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
xml文件:
<?xml version="1.0" encoding="GBK"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>测试</TITLE>
<ARTIST>CC</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
</CATALOG>
然后自己配置sevelt吧。
分享到:
相关推荐
在“一个纯XML的网站例子”中,我们可以理解为这个网站完全基于XML技术来构建。这意味着网站的所有内容,包括文本、图像描述、元数据等,都以XML格式存储和传输。XML文档由一系列元素构成,每个元素都有自己的开始...
每个文件都可能有不同的结构和规则,通过阅读和分析这些例子,我们可以加深对XML的理解,学习如何创建、解析和操作XML文档。在实际开发中,XML常与Java、Python、.NET等语言配合,实现数据的序列化和反序列化,或者...
在这个例子中,我们定义了一个根节点模板,将整个XML文档包裹在HTML的`<html>`和`<body>`标签内。另一个模板匹配`<item>`元素,并将它们转换为`<div>`,其中包含`<item>`的`title`子元素的值。 在Delphi中,可以...
在"用xsl来转换xml,xml转html的例子"中,核心概念是XSLT转换。XSLT转换过程包含以下步骤: 1. **创建XSL模板**:XSL模板定义了XML元素如何被映射到HTML元素。每个模板都包含一个模式(pattern),该模式匹配XML...
这个例子展示了一个简单的XML文件,描述了一个书籍列表。`books` 是根元素,包含多个 `book` 子元素,每个 `book` 元素包含了关于一本书的信息。 通过理解和掌握XML的基本概念和语法规则,开发者能够有效地创建、...
2. SAX解析:SAX是基于事件驱动的解析器,它逐行读取XML文档,当遇到元素、属性或其他结构时,会触发相应的事件回调。这种方式内存效率高,适用于处理大型XML文件,但需要编写事件处理程序。 在这个“xml简单解析...
在本文中,我们将深入探讨一个简单的XML例子,这个例子展示了一个书目表的实现,这对于理解XML的基本结构和用法非常有帮助。 XML文档的基本结构包括文档声明、元素、属性、注释等部分。首先,我们来看一个基本的XML...
在"XML数据岛"的例子中,XML数据通常以`<xml id="someID" src="data.xml" />`的形式嵌入HTML页面,这里的"data.xml"是XML文件的路径,"someID"则是JavaScript访问该XML数据的标识符。这样,XML数据就可以作为页面的...
2. **元素输出**:`<xsl:element>`用于动态创建新的XML元素。通过使用这个指令,我们可以根据需要构造出新的XML结构。 3. **文本处理**:`<xsl:text>`用于插入纯文本,而`<xsl:value-of select="expression">`则...
这个名为"html+js+xml的例子"的压缩包,显然是为了展示如何结合使用这些技术实现特定功能,即通过JavaScript读取并处理XML数据。在这个案例中,我们关注的是一个零售管理系统的应用场景,这可能涉及到进销存管理。 ...
本讲解将深入探讨XML解析在Android中的应用,并通过具体的例子"XmlResTest"来辅助理解。 一、XML基础 XML是一种可扩展的标记语言,与HTML类似,但更注重数据的结构和语义。XML文档由元素(Element)、属性...
XML设计的目标是传输和存储数据,而非显示数据,这与HTML(超文本标记语言)的主要用途不同。XML文档由元素、属性和文本内容组成,具有自我描述性,可以跨平台、跨应用程序进行数据交换。 在PHP中处理XML,我们需要...
DOM(Document Object Model)是一种标准,它允许程序员和脚本语言通过对象模型来访问和操作XML或HTML文档。在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改...
本篇文章将通过一个具体的例子,结合Eclipse这款强大的开发工具,探讨如何进行XML的操作。 首先,我们了解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等组成。元素是...
这个名为“XML实践例子.zip”的压缩包文件包含了一系列与XML相关的实践示例,是学习XML的宝贵资源。 首先,我们看到一个名为“2016112700.dtd”的文件,这代表了一个文档类型定义(Document Type Definition)。DTD...
"XMLDemo2学习研究例子.rar"是一个压缩包,包含了关于XML的实践应用示例,可能是用于教学或自我学习的目的。 在Web开发中,"web.xml"是一个特别重要的文件,它被称为Servlet配置文件,是Java Web应用程序的部署描述...
XML起源于HTML,但其主要区别在于HTML用于展示数据,而XML则专注于描述数据。XML文档是自描述的,这意味着每个XML文档都包含有关其内容的信息。XML文档由元素、属性、文本和注释等组成,这些组件共同构成了一种规范...
2. **掌握XPath**:学会使用XPath表达式来选取XML文档中的特定节点,这对于XSLT的模板匹配至关重要。 3. **编写XSLT样式表**:通过练习编写XSLT模板,了解如何进行元素、属性的复制、选择和转换,以及如何处理条件...
2. **XPath**:XPath是用于在XML文档中查找信息的语言。通过XPath,你可以定位到XML文档中的特定元素、属性或者文本。在Java中,可以使用`javax.xml.xpath`包中的`XPathFactory`和`XPath`类来执行XPath表达式。 3. ...