0

如果可能,我想执行 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 抛出异常或收集这些错误?在网上没有找到任何有价值的信息...

4

1 回答 1

1

我不确定是否会抛出异常,但您可以使用 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);

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

希望能帮助到你!

于 2012-08-08T13:20:44.000 回答