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 に答える