2011-09-24 81 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()