2 回答
TA贡献1829条经验 获得超9个赞
这些消息被发送到注册的ErrorListener
,调用它的warning()
方法。在独立 XPath 评估的情况下,这将是ErrorListener
注册到Configuration
. 您可以通过多种方式重定向:
(a) 你可以自己写ErrorListener
任何它想做的事情(也许是通过继承标准的)
(b) 您可以使用StandardErrorListener
注册Configuration
并调用其setLogger()
方法将其输出重定向到您自己的实现net.sf.saxon.lib.Logger
(可能是调用 log4j 的实现)。
(c) 您可以继续使用StandardLogger
, 使用的 ,StandardErrorListener
但将其输出重定向到不同的PrintStream
.
不幸的是,虽然 XSLT 和 XQuery 允许在单个转换或查询级别进行控制,但对于独立的 XPath,它必须是配置范围的。
事后
我应该提到这些特定的警告也可以使用配置选项来抑制 FeatureKeys.SUPPRESS_XPATH_WARNINGS
TA贡献1827条经验 获得超9个赞
这是一个示例实现,自 Saxon 9.9.0-1 起有效:定义一个NullErrorListener:
import javax.xml.transform.ErrorListener;
import javax.xml.transform.TransformerException;
/** Does nothing on errors (especially, does not log) */
public class NullErrorListener implements ErrorListener {
@Override public void warning(TransformerException e) throws TransformerException { }
@Override public void error(TransformerException e) throws TransformerException { }
@Override public void fatalError(TransformerException e) throws TransformerException { }
}
设置这个 ErrorListener 是通过以下方式完成的:
Processor processor = new Processor(false);
processor.setConfigurationProperty(net.sf.saxon.lib.Feature.ERROR_LISTENER_CLASS,
NullErrorListener.class.getName());
添加回答
举报