Xerces:如何使用 ErrorHandler 检查 XML 文件的有效性

Top*_*der 2 c++ error-handling xerces

我正在尝试确定给定的 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
}
Run Code Online (Sandbox Code Playgroud)

don*_*ald 5

您需要从ErrorHandler (< xercesc/sax/ErrorHandler.hpp >) 派生一个类,然后覆盖其中的所有虚拟方法。执行此操作后,您可以从您创建的类中获取错误代码。解析时不会抛出异常,因此您可以挥动 try/cache 块(或保留它以供其他用途)。