简体   繁体   English

我在 XSLT 撒克逊解析器中遇到异常

[英]I am getting exception in XSLT saxon parser

I have added a maven dependency for saxen parser, then sending the xml and xsl as a string parameter to the saxonTransform(String xml, String xsl).我为 saxen 解析器添加了一个 maven 依赖项,然后将 xml 和 xsl 作为字符串参数发送到 saxonTransform(String xml, String xsl)。 But getting some exception.但得到一些例外。

<!-- https://mvnrepository.com/artifact/net.sf.saxon/Saxon-HE -->
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>10.6</version>
</dependency>

SAXON TRANSFORMER(XSLT) CODE:撒克逊变压器(XSLT)代码:

public static String saxonTransform(String xml, String xsl) throws TransformerException, FileNotFoundException {

String result = "";

System.setProperty("javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl");

System.setProperty("javax.xml.transform.TransformerFactory", "net.sf.saxon.TransformerFactoryImpl");

StringWriter out = new StringWriter();

TransformerFactory tFactory = TransformerFactory.newInstance();

tFactory.setAttribute(FeatureKeys.DTD_VALIDATION, false);

StreamSource xmlSource = new StreamSource(new StringReader(xml));

StreamSource xslSource = new StreamSource(new StringReader(xsl));

StreamResult xmlResult = new StreamResult(out);

Transformer transformer = tFactory.newTransformer(xslSource);

transformer.transform(xmlSource, xmlResult);

result = out.toString();

return result;

}

But, the given line is not able to transform the xml:但是,给定的行无法转换 xml:

Transformer transformer = tFactory.newTransformer(xslSource);

Giving the error like:给出如下错误:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
[Handler dispatch failed; nested exception is javax.xml.parsers.FactoryConfigurationError:
Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found] with root cause

In this line在这一行

System.setProperty("javax.xml.parsers.SAXParserFactory",
    "org.apache.xerces.jaxp.SAXParserFactoryImpl");

you're saying that you want to use Apache Xerces as your XML parser, but it looks is if it's not available on the classpath.你是说你想使用 Apache Xerces 作为你的 XML 解析器,但看起来它在类路径上不可用。

(Note that for most purposes these days, using the version of Xerces that's built into the JDK works perfectly well. There was a time when the JDK version had some nasty bugs, but that seems to have been fixed a while ago.) (请注意,对于如今的大多数用途,使用 JDK 中内置的 Xerces 版本效果非常好。曾经有一段时间 JDK 版本有一些令人讨厌的错误,但这似乎已经在不久前修复了。)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM