c++ - SAX2 (Xerces-C) : How to get the line number of parsed tags?

标签 c++ sax saxparser xerces xerces-c

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

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

最佳答案

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

关于c++ - SAX2 (Xerces-C) : How to get the line number of parsed tags?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540428/

相关文章:

java - Xerces Sax2解析器编码问题

c++ - 存储小型、固定大小、分层静态数据集的好方法是什么?

php - XMLReader 是 SAX 解析器、DOM 解析器,还是两者都不是?

java - 使用 Java 读取 XML - SAX 解析器

java - 在java中使用SAX解析XML

java - SAXParserFactory URL 超时

C++ 虚拟继承、虚拟析构函数和 dynamic_cast<void*>

c++ - 如何正确地将变量传入和传出非默认构造函数?

c++ - 构造函数符号的双重发射

java - 使用java异常进行条件检查