Я пишу небольшую обертку вокруг libxml2 в C++, и я пытаюсь разобраться, как обрабатывать ошибки. Пока, скажем, я просто хочу распечатать их. Вот что у меня есть на данный момент:libxml2 обработка ошибок
Моя функция обработки ошибок:
void foo(void *ctx, const char *msg, ...) {
cout << msg << endl;
return;
}
инициализируется так:
xmlGenericErrorFunc handler = (xmlGenericErrorFunc)foo;
initGenericErrorDefaultFunc(&handler);
Однако, если я разобрать плохой XPath, я получаю этот выход:
%s
Без кода обработки ошибок, я получаю это:
XPath error : Invalid expression //[email protected] ^
Очевидно, в конце концов, моя обработка ошибок будет делать больше, чем просто распечатать сообщение об ошибке (он будет записывать их в базу данных или что-то), но сейчас - как я могу получить эту строку ошибки?
Это почти что есть - это делает меня «Недопустимое выражение», но не все остальное. –
Это, вероятно, все сообщение содержит, вы сказали, что у вас есть% s, когда вы печатали только сообщение msg, что указывает на то, что для foo() есть только один аргумент, и это строка для печати. Может быть, информация здесь может вам помочь? http://xmlsoft.org/html/libxml-xmlerror.html#xmlGenericErrorFunc – Puppe
@Puppe - это имеет смысл. К сожалению, документация еще не все о том, что передается в 'xmlGenericErrorFunc'. То, что у вас есть, достаточно хорошо для моих целей. Благодаря! –