Pergunta

No meu software, eu uso libxml2 e XMLSEC manipular (obviamente) estruturas de dados XML. Eu uso principalmente a validação do esquema XSD e, até agora, funciona bem.

Quando a entrada da estrutura de dados do cliente não corresponde ao esquema XSD, o libxml2 (ou xmlsec) saiam algumas seqüências de depuração para o console.

Aqui está um exemplo:

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

Enquanto essas cordas são útil Para fins de depuração, Eu não quero que eles apareçam e poluem a saída do console no software liberado. Até agora, não consegui encontrar uma maneira oficial de fazer isso.

Você sabe como suprimir a saída de depuração ou (ainda melhor) para redirecioná -lo para uma função personalizada?

Muito Obrigado.

Foi útil?

Solução

Eu investigaria o xmlSetGenericErrorFunc () e xmlthrdefsetGenericerrorFunc () Funções, elas parecem certas. A documentação é .. esparsa, no entanto.

Aqui é algum código Python que parece usar essas funções para desativar as mensagens de erro, as linhas relevantes se parecem com a seguinte:

# 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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top