gpt4 book ai didi

java - 使用 Xalan xslt 捕获异常

转载 作者:行者123 更新时间:2023-12-01 15:07:31 28 4
gpt4 key购买 nike

我有以下基于 XalanXSLT:

TransformerFactory factory = TransformerFactory.newInstance();
XalanErrorListener listener = new XalanErrorListener();
factory.setErrorListener(listener);

// Create transformer
StreamSource config = new StreamSource(xslPath);
Transformer transformer = factory.newTransformer(config);

// Create input / ouput
StreamSource source = new StreamSource(inputPath);
StreamResult result = new StreamResult(outputPath);

// Transform
transformer.transform(source, result);

我的XalanErrorListener只是覆盖javax.xml中的errorfatalErrorwarning方法。 Transform.ErrorListener 类并记录异常:

public final class XalanErrorListener implements ErrorListener {

static final Logger LOGGER = LoggerFactory.getLogger(XalanErrorListener.class);

@Override
public void error(TransformerException exception) throws TransformerException {
LOGGER.error(exception);
}

@Override
public void fatalError(TransformerException exception) throws TransformerException {
LOGGER.error(exception);
}

@Override
public void warning(TransformerException exception) throws TransformerException {
LOGGER.warn(exception);
}
}

但是,当在编码错误的文件上执行时,我在控制台中收到以下消息:

(Location of error unknown)
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:
Invalid byte 2 of 2-byte UTF-8 sequence.

程序正常执行:没有抛出或记录异常,并且生成的文件为空!

如何捕获异常并按照我想要的方式处理它?<​​/p>

最佳答案

您提供给 Xalan 的 ErrorListener 会捕获转换错误,但不会捕获 XML 解析错误。为此,您需要向 Xerces 解析器提供 ErrorHandler。

关于java - 使用 Xalan xslt 捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783039/

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