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