首页 > 解决方案 > 使用 XSLT 将 XML 输出转换为 HTML 表

问题描述

我有一个 java servlet,它从 java 程序的返回中获取 XML 字符串。我想将此 XML 字符串转换为 HTML 表(不是文件,如果可能的话)并让我的servlet 显示它

使用 XSLT 对我来说似乎是一个不错的选择,所以我编写了一个 XSL 文件。但是,我不知道如何从这里开始。我在网上看到了不同的代码片段,但它们都使用 XML 文件,而不是从另一个程序输出的 XML 字符串,所以它们不适合我。我在上面找不到任何东西,而且我对后端还很陌生......所以我会很感激一些帮助或想法或链接或其他任何东西。谢谢!

标签: javahtmlxmlxsltservlets

解决方案


您可以使用 JAXP API 包来完成此操作javax.xml.transform

这是我使用的代码:

public static void doXsltTransform( StreamSource sourceXml, StreamSource xslt, StreamResult resultXml ) throws TransformerException {
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer( xslt );
    transformer.setOutputProperty( OutputKeys.ENCODING, "UTF-8" );
    transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
    transformer.transform( sourceXml, resultXml );
}

你可以像这样调用它:

    InputStream inputStream = // some input stream from whereever
    OutputStream out = // where you want to write the XML/HTML

    StreamSource sourceXml = new StreamSource( inputStream );
    StreamSource xslt = new StreamSource( inpStreamOfYourXSLT );
    StreamResult resultXml = new StreamResult( out );
    doXsltTransform( sourceXml, xslt, resultXml );

这些是进口:

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

推荐阅读