使用 XSLT、输入和输出字符串而不是文件将 XML 转换为 HTML

标签 xml string xslt javax

我已经完成了一些 XSLT 教程,所有这些教程都讨论了使用输入和输出文件;在我的具体情况下,我将 XML 和 XSL 全部作为字符串 - 我在运行时从数据库中读取它们,并且它会根据我正在使用的记录而变化。

有没有办法进行某种转换来操作 StreamSource,为其提供实际的字符串而不是文件名?

我说的是:

        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer(new StreamSource(xsl));
        StreamSource src = new StreamSource(new FileInputStream(xml)); 

其中 xml 和 xls 都是字符串,包含实际的 xml 或实际的 xsl。

最佳答案

使用 StringReader并使用 StreamSource constructor that takes the reader as arguments .

这是一个 MCVE:

package transformStrings;

import java.io.StringReader;
import java.io.StringWriter;

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

public class transformFromStrings {

    public static void main(String[] args) throws TransformerException
    {
            StringReader xmlReader = new StringReader("<x/>");
            StreamSource xmlSource = new StreamSource(xmlReader);

            StringReader xslReader = new StringReader("<xsl:stylesheet version=\"1.0\"  xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"><xsl:template match=\"/\">OMG!</xsl:template></xsl:stylesheet>");
            StreamSource xslSource = new StreamSource(xslReader);

            TransformerFactory factory  = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer(xslSource);

            StringWriter resultWriter = new StringWriter();
            transformer.transform(xmlSource, new javax.xml.transform.stream.StreamResult(resultWriter));
            System.out.println(resultWriter.toString());
    }
}

关于使用 XSLT、输入和输出字符串而不是文件将 XML 转换为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41895269/

相关文章:

android - 缩放 XML 中的可绘制资源 (Android)

java - 整数超出 2147447602 值

java - 替换所有出现的特定字符并获取所有变体

python - 删除一行中特定单词的重复

java - 通过 xslt 的文本文件的 mime 类型

xml - 识别 XML 中节点下的标签超集

jquery - 使用 jQuery 设置 XML 字符串中的值

java - 我无法使用 aries jpa/v2.0.0 和 transactions/v2.0.0

Java String pool相关疑惑

xml - 使用 XSLT 转换其中包含 < > 的 XML