Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关闭到控制台的Saxon输出_Java_.net_Saxon - Fatal编程技术网

Java 关闭到控制台的Saxon输出

Java 关闭到控制台的Saxon输出,java,.net,saxon,Java,.net,Saxon,当我们使用Saxon时,有时会将输出输出到控制台,如: 第2行第6列的警告 在{\n\t\t\t\t确实\n\t\t\t\t\t测试}中: 表达式正在查找名为“true”的子元素-可能true()是 预定的要避免此警告,请使用child::true或./true。 第2行第6列的警告 在{…备选方案}中: 该表达式正在查找名为“false”的子元素-可能是false() 预定的要避免此警告,请使用child::false或./false 有没有办法关掉这个?是否还有一种方法可以将它提供给我们正在

当我们使用Saxon时,有时会将输出输出到控制台,如:

第2行第6列的警告 在{\n\t\t\t\t确实\n\t\t\t\t\t测试}中: 表达式正在查找名为“true”的子元素-可能true()是 预定的要避免此警告,请使用child::true或./true。 第2行第6列的警告 在{…备选方案}中: 该表达式正在查找名为“false”的子元素-可能是false() 预定的要避免此警告,请使用child::false或./false

有没有办法关掉这个?是否还有一种方法可以将它提供给我们正在使用的log4j/log4net实例

我们创建了一个编译器,如下所示(我们在code-Java和.NET中执行XPath 2.0查询):

我不能给出日志文件名,因为我们希望它出现在我们正在创建的log4j/log4net日志中。这些可能是一个文件,但也可能是很多其他东西,我们希望它能够转到用户配置的任何日志侦听器


有办法吗?

这些消息被发送到注册的
ErrorListener
,调用其
warning()
方法。对于独立的XPath计算,这将是注册到
配置中的
ErrorListener
。您可以通过以下几种方式重定向:

(a) 您可以编写自己的
ErrorListener
,它可以做任何它想做的事情(可能通过对标准的子类化)

(b) 您可以使用
配置注册
StandardErrorListener
,并调用其
setLogger()
方法将其输出重定向到您自己的
net.sf.saxon.lib.Logger
(可能是调用log4j的实现)

(c) 您可以继续使用
StandardErrorListener
使用的
StandardLogger
,但将其输出重定向到不同的
PrintStream

不幸的是,尽管XSLT和XQuery允许在单个转换或查询级别对其进行控制,但对于独立的XPath,它必须是配置范围的

事后思考


我应该提到,也可以使用配置选项
FeatureKeys来抑制这些特定警告。抑制XPATH\u警告

这些消息被发送到注册的
ErrorListener
,调用其
warning()
方法。对于独立的XPath计算,这将是注册到
配置中的
ErrorListener
。您可以通过以下几种方式重定向:

(a) 您可以编写自己的
ErrorListener
,它可以做任何它想做的事情(可能通过对标准的子类化)

(b) 您可以使用
配置注册
StandardErrorListener
,并调用其
setLogger()
方法将其输出重定向到您自己的
net.sf.saxon.lib.Logger
(可能是调用log4j的实现)

(c) 您可以继续使用
StandardErrorListener
使用的
StandardLogger
,但将其输出重定向到不同的
PrintStream

不幸的是,尽管XSLT和XQuery允许在单个转换或查询级别对其进行控制,但对于独立的XPath,它必须是配置范围的

事后思考


我应该提到,也可以使用配置选项
FeatureKeys来抑制这些特定警告。抑制\u XPATH\u警告

以下是一个示例实现,自Saxon 9.9.0-1:定义NullErrorListener以来有效:

设置此ErrorListener的方法是:

Processor processor = new Processor(false);
processor.setConfigurationProperty(net.sf.saxon.lib.Feature.ERROR_LISTENER_CLASS,
                                   NullErrorListener.class.getName());

下面是一个示例实现,自Saxon 9.9.0-1:定义NullErrorListener以来有效:

设置此ErrorListener的方法是:

Processor processor = new Processor(false);
processor.setConfigurationProperty(net.sf.saxon.lib.Feature.ERROR_LISTENER_CLASS,
                                   NullErrorListener.class.getName());

Bug ATE-1221(内部注释)那么您如何使用Saxon,我想您需要共享相关代码,以允许其他人就如何重定向消息提出建议。当然,那个特别的警告告诉你如何避免它。将
标准错误输出文件
列为instance@MartinHonnen-我在上面添加了代码。提供文件名对我们来说不太合适,因为我们希望将这些警告发送到log4j/log4net流,而log4j/log4net流可能不是文件。Bug ATE-1221(内部注释)那么您如何使用Saxon,我想您需要共享相关代码,以允许其他人就如何重定向消息提出建议。当然,那个特别的警告告诉你如何避免它。将
标准错误输出文件
列为instance@MartinHonnen-我在上面添加了代码。提供文件名对我们来说不太合适,因为我们想将这些警告发送到log4j/log4net流,而log4j/log4net流可能不是一个文件。您能给我举一个如何实现选项a或b的示例吗?我想我可以将消息发送到我们的log4j记录器。谢谢-daveCould你能给我举一个如何实施选项a或b的例子吗?我想我可以将消息发送到我们的log4j记录器。谢谢-戴夫
Processor processor = new Processor(false);
processor.setConfigurationProperty(net.sf.saxon.lib.Feature.ERROR_LISTENER_CLASS,
                                   NullErrorListener.class.getName());