Xerces: Как проверить правильность XML-файла с помощью ErrorHandler

Я пытаюсь определить, является ли данный файл XML допустимым (имеет правильный синтаксис и структуру), и я использую Xerces. Я был в состоянии успешно прочитать правильные файлы, но когда я даю ему файлы с неправильным синтаксисом, никаких ошибок не выдается.

Я ловил рыбу и обнаружил, что мне, возможно, придется использовать обработчик ошибок и пользователя setErrorHandler ловить ошибки вместо традиционных try-throw-catch Обработка исключений.

Однако проблема, с которой я столкнулся, заключается в том, что я очень запутался, как объявить правильный обработчик, установить его для моего анализатора и затем прочитать ошибки, если они есть.

Есть ли шанс, что кто-нибудь сможет пролить свет на мою ситуацию?

// @input_parameter from function: const string & xmlConfigArg

xercesc::DOMDocument* doc = NULL;

string xmlConfig(xmlConfigArg);

Handler handler; // I'm not sure what type of handler to use
_parser->setErrorHandler(&handler);
try{
_parser->parse(xmlConfigArg.c_str());
doc = _parser-> getDocument();
}catch(...){
//Nothing is ever caught here
}

2

Решение

Вы должны извлечь класс из ErrorHandler (< xercesc / sax / ErrorHandler.hpp>)
затем переписать все виртуальные методы там.
После этого вы можете получить код ошибки из созданного вами класса. Никаких исключений при разборе не будет, поэтому вы можете помахать блоком try / cache (или оставить его для другого использования).

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]