我正在使用QXmlDefaultHandler解析xml文件,如下所示:
void Parser::ParseFilename(const char* pFilename)
{
LOG_DEBUG("Parser::ParseFilename(%s)", pFilename);
ClearState();
m_inputFile.setFileName(pFilename);
QXmlInputSource source( &m_inputFile );
QXmlSimpleReader reader;
reader.setContentHandler( this );
reader.parse( source );
}
我需要知道错误消息的行号。我怎么能得到它们?
答案 0 :(得分:1)
使用传递给QXmlErrorHandler::error()函数的异常。您可以使用QXmlReader::setErrorHandler()设置自定义错误处理程序。
答案 1 :(得分:0)
回答自己。
我的问题并不完全清楚,因为我没有写过我需要生成自己的自定义错误消息。例如,我需要对某些属性进行复杂的验证。然后,如果属性无效,我需要编写如下消息:“第15454行第48行出错,attritubute'数字'应为素数,但为65536'。
Ariya Hidayat建议的方法仅适用于SAX解析器本身生成的消息(如格式错误的XML)。
对于自定义消息,我需要重载setDocumentLocator ( QXmlLocator * locator )
,告诉我当前的定位器,并保存定位器的值,如savedLocator = locator;
实际行号是locator->lineNumber().