如何使用 Xerces 检查 XML 是否格式正确

How to check if XML is well formed with Xerces

我正在使用 Xerces C++ 库来解析 XML。我需要一个函数来确定输入的 XML 是否格式正确。 DOMConfiguration Interface中提到了"well formed",但没有说明如何使用它。

到目前为止,我的代码是这样的。无论 XML 格式是否正确,它的工作原理都是一样的,但我需要知道它何时格式不正确。

try {
    XMLPlatformUtils::Initialize();
    // create the DOM parser
    XercesDOMParser *parser = new XercesDOMParser;
    parser->setValidationScheme(XercesDOMParser::Val_Never);
    parser->parse(xml_input.c_str()); // where xml_input is my XML filename

    // get the DOM representation
    DOMDocument *doc = parser->getDocument();
    // get the root element
    DOMElement *root = doc->getDocumentElement();

}
catch ( DOMXPathException& e )
{
    char* message = xercesc::XMLString::transcode( e.getMessage() );
    cout << message << endl;
    XMLString::release( &message );
}

您应该使用 WFXMLScanner 扫描仪仅执行格式正确性检查。 There are great examples 关于如何将特定扫描仪与 xerces 结合使用。