我使用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。有没有办法获取标签的行号?
答案 0 :(得分:3)
覆盖从setDocumentLocator()
派生的类中的xercesc::DefaultHandler
方法,以获取xercesc::Locator
对象。然后,您可以调用其getLineNumber()
方法。