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

我有一个java程序,使用xerces API解析XML文档.

我的解析类扩展了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方法.

标签:line-numbers,java,xml,xerces

来源: https://codeday.me/bug/20190827/1743864.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值