我想执行xslt转换并处理所有错误(如果可能)。但是这段代码

        transformer = factory.newTransformer(xslt);


不会引发异常,但是会在控制台上显示以下内容:

Неизвестный ИД системы; Номер строки 7; Номер столбца 40;        org.apache.xml.utils.WrappedRuntimeException: Переменная site_name не найдена

(in English this means Unknown ID system line number 7, column number 40;   org.apache.xml.utils.WrappedRuntimeException: site_name variable was not found)


完成函数后,如何强制newTransformer引发异常或收集这些错误?
尚未在网上找到任何有价值的信息...

最佳答案

我不确定会引发异常,但是可以使用ErrorListener收集它们。
遵循以下原则:

class ErrorCollector implements ErrorListener {

    private List<TransformerException> errors = new ArrayList<TransformerException>();

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

    ...
}


(代码不完整,但是我想您已经明白了)

然后将其添加到您的工厂:

ErrorCollector errorCollector = new ErrorCollector();
factory.setErrorListener(errorCollector);


然后访问收集器中的错误。

希望能帮助到你!

关于java - 在xslt转换期间如何处理org.apache.xml.utils.WrappedRuntimeException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11864917/

10-08 23:01