0

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

4

1 回答 1

3

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

于 2011-10-12T12:56:28.793 回答