我使用 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/