سؤال

في برنامجي ، أستخدمه 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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top