2011-09-24 82 views
0

我使用Xerces-C的SAX2 api解析C++中的XML文件。 因此,我實現了DefaultHandler接口及其功能SAX2(Xerces-C):如何獲得解析標籤的行號?

void startElement(
    const XMLCh* const uri, 
    const XMLCh* const localname, 
    const XMLCh* const qname, 
    const xercesc::Attributes&  attrs 
); 

void endElement(
    const XMLCh* const uri, 
    const XMLCh* const localname, 
    const XMLCh* const qname 
); 

當XML文件中有語法錯誤,拋出的SAXParseException給我發生錯誤的行號,我可以將錯誤行打印給用戶。

在我的應用程序中,可能語法格式良好,但包含的數據沒有太多意義。在這種情況下,我也想將錯誤行打印給用戶。但是我沒有找到獲取當前行號的方法,因爲xml在語法上是正確的,並且沒有引發SAXParseException。有沒有辦法獲得標籤的行號?

+0

這似乎是一個問題,有一個[答案] [1] [1]的DUP:http://stackoverflow.com/questions/3276971/xerces-c-dom-node -line-列數的位置 –

回答

2

覆蓋您的類中的​​方法派生自xercesc::DefaultHandler以獲取xercesc::Locator對象。然後你可以調用它的方法getLineNumber()