Pregunta

En mi software, uso libxml2 y xmlsec para manipular (obviamente) las estructuras de datos XML. Yo uso principalmente la validación del esquema XSD y hasta el momento, funciona bien.

Cuando la entrada estructura de datos por parte del cliente no coincide con el esquema XSD, libxml2 (o xmlsec) de salida de algunas cadenas de depuración en la consola.

Este es un ejemplo:

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

Si bien esas cadenas son utilidad para fines de depuración, No quiero que aparezcan y contaminan la salida de la consola en el software lanzado . Hasta ahora, no he podido encontrar una manera de hacer esto oficial.

¿Usted sabe cómo suprimir la salida de depuración o (aún mejor) para redirigirlo a una función personalizada?

Muchas gracias.

¿Fue útil?

Solución

Yo investigaría las funciones xmlSetGenericErrorFunc() y xmlThrDefSetGenericErrorFunc(), parecen derecha. La documentación es escasa .., sin embargo.

Aquí es cierto código Python que parece utilización estas funciones a desactivar los mensajes de error, las líneas relevantes aspecto:

# 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top