【问题标题】:SAX2 (Xerces-C): How to get the line number of parsed tags?SAX2 (Xerces-C):如何获取已解析标签的行号?
【发布时间】:2011-09-24 16:53:32
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2017-03-16
    • 2021-04-19
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多