SAX2(Xerces-C):如何获取已解析标签的行号?

时间:2011-09-24 16:53:32

标签: c++ sax saxparser xerces xerces-c

我使用Xerces-C的SAX2 api在C ++中解析XML文件。 所以我确实实现了DefaultHandler接口及其功能

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。有没有办法获取标签的行号?

1 个答案:

答案 0 :(得分:3)

覆盖从setDocumentLocator()派生的类中的xercesc::DefaultHandler方法,以获取xercesc::Locator对象。然后,您可以调用其getLineNumber()方法。