gpt4 book ai didi

java - 使用 Xerces 解析 XML 文档时是否可以获取当前行号?

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:15 25 4
gpt4 key购买 nike

我有一个使用 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 并使用其 getLineNumbergetColumnNumber 方法。

关于java - 使用 Xerces 解析 XML 文档时是否可以获取当前行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/570216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com