تعطيل ناتج التصحيح في libxml2 و xmlsec
سؤال
في برنامجي ، أستخدمه libxml2 و XMLSEC لمعالجة (من الواضح) هياكل بيانات XML. أنا أستخدم التحقق من صحة مخطط XSD بشكل أساسي وحتى الآن ، يعمل بشكل جيد.
عندما لا يتطابق إدخال بنية البيانات من قبل العميل مع مخطط XSD ، فإن LIBXML2 (أو XMLSEC) يخرج بعض سلاسل التصحيح إلى وحدة التحكم.
هنا مثال:
Entity: line 1: parser error : Start tag expected, '<' not found
DUMMY<?xml
^
في حين أن هذه الأوتار مفيد لأغراض تصحيح الأخطاء ، لا أريدهم أن يظهروا وينشطوا إخراج وحدة التحكم في البرنامج الذي تم إصداره. حتى الآن ، لم أتمكن من العثور على طريقة رسمية للقيام بذلك.
هل تعرف كيفية قمع ناتج التصحيح أو (حتى أفضل) لإعادة توجيهه إلى وظيفة مخصصة؟
شكرا جزيلا.
المحلول
أود التحقيق في xmlsetgenericerrorfunc ()
و xmlthrodefsetgenericerrorfunc ()
وظائف ، تبدو على حق. الوثائق هي .. متناثرة ، رغم ذلك.
هنا هل بعض رمز 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)