我有一个使用 xerces API 解析 XML 文档的 java 程序。
我的解析类扩展了 org.apache.xerces.parsers.XMLDocumentParser,重载了 startElement、endElement、characters 方法。
由于是手写的复杂XML文档(主要是某种配置元素),xsd或dtd的经典验证是不够的,我必须返回给用户XML文档是无效的。
但我无法实现的一件事是在错误消息中添加有关当前正在解析的行号(以及为什么不是列号)的信息以及错误发生的位置。
我认为这是可能的,因为当 XML 文档不是 XML 有效时解析器生成的异常 (org.apache.xerces.xni.parser.XMLParseException) 包含这些信息。
最佳答案
我从来没有用 xerces 尝试过这个,但是 SAX 解析器可以存储 SAX Locator ,您可以在解析文档时(或发生异常后)从中获取行号和列号。
看起来 XMLDocumentParser
可以做同样的事情。它的父类 AbstractXMLDocumentParser
有一个 startDocument传递 XMLLocator
参数的方法。如果覆盖此方法,则可以保存 XMLLocator
并使用其 getLineNumber
和 getColumnNumber
方法。
关于java - 使用 Xerces 解析 XML 文档时是否可以获取当前行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/570216/