gpt4 book ai didi

xml - LIBXML2 : Suppress the debug output on console

转载 作者:行者123 更新时间:2023-12-04 21:55:18 25 4
gpt4 key购买 nike

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

当客户端输入的数据结构与 XSD 架构不匹配时,libxml2 会向控制台输出一些调试消息。

这是一个例子:

/data/file_name:5230: 解析器错误:StartTag:无效的元素名称 < ^

虽然这些字符串可用于调试目的,但我不希望它们出现并污染最终应用程序中的控制台输出。到目前为止,我找不到执行此操作的官方方法。虽然,我确实有一种修改库本身的方法,但我正在寻找一种库配置,即不修改代码。

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

和平与问候。

最佳答案

有一个回调机制可以按照您想要的方式输出警告和错误。

如 API 文档中所述,xmlSchemaSetParserErrors() 设置用于处理验证上下文错误的回调函数。

您需要针对定义的签名编写两个回调函数:

一个例子可以是:

void err(void *ctx, const char *msg, ...)
{
char buf[1024];
va_list args;

va_start(args, msg);
int len = vsnprintf_s(buf, sizeof(buf), sizeof(buf)/sizeof(buf[0]), msg, args);
va_end(args);

if(len==0) // Can't create schema validity error!
else // Do something to store `buf`,
// you may need to use void *ctx to achieve this

return;
}

然后打电话

xmlSchemaSetValidErrors(valid_ctxt_ptr, (xmlSchemaValidityErrorFunc) 错误, (xmlSchemaValidityWarningFunc) 警告, ctx);

调用之前

xmlSchemaValidateDoc()

关于xml - LIBXML2 : Suppress the debug output on console,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11901206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com