gpt4 book ai didi

java - 使用 XSLT 删除 PrettyPrint

转载 作者:行者123 更新时间:2023-12-01 17:26:27 25 4
gpt4 key购买 nike

出于某种原因,我的下面的代码给出了异常:javax.xml.transform.TransformerConfigurationException:无法编译样式表

public String removePrettyPrint(String xml) throws TransformerException, TransformerFactoryConfigurationError {
String result = "";
TransformerFactory factory = TransformerFactory.newInstance();
String source = "<?xml version=\"1.0\"?><xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"> <xsl:output indent=\"no\" /> <xsl:template match=\"@*|node()\"> <xsl:copy> <xsl:apply-templates select=\"@*|node()\"/> </xsl:copy> </xsl:template></xsl:stylesheet>";
Source xslt = new StreamSource(source);
Transformer transformer = factory.newTransformer(xslt);
Source text = new StreamSource(xml);
transformer.transform(text, new StreamResult(result));
return result;
}

这有什么问题吗?

最佳答案

我认为问题在于,当您将字符串作为参数传递给 StreamSource 时,它期望它是 XML 文档的 URL,而不是实际的 XML 字符串本身。

您可能需要在此处使用 StringReader 阅读器:

String source = "...XSL Here...";
StringReader xsltReader = new StringReader(source);
Source xslt = new StreamSource(xsltReader);
Transformer transformer = factory.newTransformer(xslt);

假设您传递的是 XML,而不是 XML 文档的 URL,您可能必须对 XML 执行相同的操作。

StringReader xmlReader = new StringReader(xml);
Source text = new StreamSource(xmlReader);

对于转换本身,您可能需要使用 StringWriter

StringWriter writer = new StringWriter();
transformer.transform(text, new StreamResult(writer));
result = writer.toString();

关于java - 使用 XSLT 删除 PrettyPrint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14647642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com