2010-05-10 1 views
1

제 소프트웨어에서 XML 데이터 구조를 조작하려면 libxml2xmlsec을 사용합니다. 주로 XSD 스키마 유효성 검사를 사용하며 지금까지는 잘 작동합니다.libxml2 및 xmlsec에서 디버그 출력 사용 안 함

클라이언트가 입력 한 데이터 구조가 XSD 스키마와 일치하지 않으면 libxml2 (또는 xmlsec)는 일부 디버그 문자열을 콘솔에 출력합니다. 그 문자열은 디버깅 목적으로 유용, 이다 내가 그들을 표시하고 공개 소프트웨어에서 콘솔 출력을 polute하고 싶지 않지만

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

: 여기

은 예입니다. 지금까지이 일을하는 공식적인 방법을 찾을 수 없었습니다.

디버그 출력을 억제하는 방법을 알고 계시거나 (더 나은) 사용자 정의 함수로 리디렉션하는 방법을 알고 계십니까?

감사합니다.

답변

3

나는 xmlSetGenericErrorFunc()xmlThrDefSetGenericErrorFunc() 함수를 조사해 보겠다. 그러나 설명서는 희박합니다.

Here이 오류 메시지를 해제하는이 기능을 사용하는 것 몇 가지 파이썬 코드, 관련 라인은 다음과 같이 :

# 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) 
+0

+1 : 감사합니다! 설명서는 정말 짜증납니다. 나는 오늘 저녁에 이것이 작동하는지 점검 할 것이다. 나는 계속 너를 게시 할 것이다. – ereOn

+1

@ereOn : 신난다. 좀 더 일반적인 것으로 보이는 함수와 예제 코드를 추가하면 도움이 될 것입니다. 또한 libxml의 사이트에서 검색하여 찾을 수있는 많은 메일 링리스트 게시물이있는 것 같습니다. – unwind

+0

그것은 매력처럼 작동합니다! 다시 감사합니다 ;) – ereOn