在我的软件中,我使用 libxml2xmlsec 操作(显然)XML 数据结构。我主要使用 XSD 模式验证,到目前为止,它运行良好。

当客户端输入的数据结构与 XSD 架构不匹配时,libxml2(或 xmlsec)会向控制台输出一些调试字符串。

这是一个例子:

Entity: line 1: parser error : Start tag expected, '<' not found
DUMMY<?xml
^

虽然这些字符串是 有用 出于调试目的, 我不希望它们出现并污染已发布软件中的控制台输出. 。到目前为止,我找不到执行此操作的官方方法。

您知道如何抑制调试输出或(甚至更好)将其重定向到自定义函数吗?

非常感谢。

有帮助吗?

解决方案

我会调查 xmlSetGenericErrorFunc()xmlThrDefSetGenericErrorFunc() 函数,它们看起来是正确的。文档是..不过,稀疏。

这里 有一些 Python 代码似乎使用这些函数来禁用错误消息,相关行如下所示:

# dummy function: no debug output at all
cdef void _nullGenericErrorFunc(void* ctxt, char* msg, ...) nogil:
    pass

# setup for global log:

cdef void _initThreadLogging():
    # disable generic error lines from libxml2
    xmlerror.xmlThrDefSetGenericErrorFunc(NULL, _nullGenericErrorFunc)
    xmlerror.xmlSetGenericErrorFunc(NULL, _nullGenericErrorFunc)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top