当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在使用Xerces解析XML文档时是否可以获取当前行号?》经验,为你挑选了1个好方法。

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

我的解析类扩展了org.apache.xerces.parsers.XMLDocumentParser,重载了startElement,endElement,characters方法.

由于它是一个手工编写的复杂XML文档(主要是某种配置元素),xsd或dtd的经典验证是不够的,我必须向用户返回XML文档无效.

但我无法实现的一件事是在错误消息中添加有关当前正在解析的行号(以及为什么不是列号)的信息以及错误发生的位置.

我认为这是可能的,因为当XML文档不是XML有效时,解析器生成的异常(org.apache.xerces.xni.parser.XMLParseException)包含这些信息.



1> Jason Day..:

我从来没有尝试过使用xerces,但是SAX解析器可以存储一个SAX 定位器,在解析文档时(或者在异常之后)可以从中获取行号和列号.

它看起来似乎XMLDocumentParser可以做同样的事情.它的父类AbstractXMLDocumentParser有一个startDocument方法,它传递一个XMLLocator参数.如果重写此方法,您可以保存XMLLocator并使用其getLineNumbergetColumnNumber方法.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有