Вопрос

В моем программном обеспечении я использую libxml2. а также xmlsec. манипулировать (очевидно) структуры данных XML. В основном я использую проверку XSD схемы и до сих пор, хорошо работает.

Когда ввод структуры данных, вводимый клиентом, не соответствует XSD Schema, LibxML2 (или XMLSEC) выводит некоторые отладочные струны на консоль.

Вот пример:

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

В то время как эти строки полезный для целей отладки, Я не хочу, чтобы они появлялись и полируют консольную вывод в выпущенном программном обеспечении. Отказ Пока что я не мог найти официальный способ сделать это.

Знаете ли вы, как подавить вывод отладки или (даже лучше), чтобы перенаправить его на пользовательскую функцию?

Большое спасибо.

Это было полезно?

Решение

Я бы расследовал xmlsetgenericeRororfunc () а также XMLTRTRDEFSETGENERICERRORFUNC () Функции, они кажутся правильными. Документация происходит .. Резет, хотя.

Здесь Это какой-то код 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