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

时间:2013-02-04 19:52:14

标签: 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
}

1 个答案:

答案 0 :(得分:3)

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