2

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

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

这是一个例子:

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

虽然这些字符串对于调试目的很有用,但我不希望它们出现并污染已发布软件中的控制台输出。到目前为止,我找不到这样做的官方方法。

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

非常感谢。

4

2 回答 2

4

我会调查xmlSetGenericErrorFunc()andxmlThrDefSetGenericErrorFunc()函数,它们似乎是正确的。但是,文档很稀疏。

是一些似乎使用这些函数来禁用错误消息的 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)
于 2010-05-10T09:31:09.140 回答
0

我正在为一些 C 代码寻找相同的解决方案:

static void __xmlGenericErrorFunc (void *ctx, const char *msg, ...) { }
xmlSetGenericErrorFunc(nil, __xmlGenericErrorFunc);
xmlThrDefSetGenericErrorFunc(nil, __xmlGenericErrorFunc);
于 2020-01-24T15:26:16.820 回答