加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML / Java:在解析标签和属性时精确的线条和字符位置?

发布时间:2020-12-16 00:00:56 所属栏目:百科 来源:网络整理
导读:我正在尝试找到一种方法来在解析 XML文档时精确确定标记和属性的行号和字符位置.我想这样做,以便我可以准确地向文档无效的XML文档的作者(通过Web界面)报告. 最后,我想将插入符号设置为无效标记或仅在无效属性的开放引用内. (我现在不使用XML Schema,因为属性
我正在尝试找到一种方法来在解析 XML文档时精确确定标记和属性的行号和字符位置.我想这样做,以便我可以准确地向文档无效的XML文档的作者(通过Web界面)报告.

最后,我想将插入符号设置为无效标记或仅在无效属性的开放引用内. (我现在不使用XML Schema,因为属性的确切格式是以一种单独的模式无法验证的方式.我甚至可能希望报告某些属性在属性的值中部分无效.或者类似,在开始和结束标记之间的文本部分.)

我尝试过使用SAX(org.xml.sax)和Locator接口.这可以达到一定程度,但还不够好.它只会在事件发生后报告读取位置;例如,对于startElement(),紧接在open标记结束之后的字符.我不能只减去标签名称的长度,因为open标签中的属性,自动关闭标签和/或换行符会将其丢弃. (并且Locator根本不提供有关属性位置的信息.)

理想情况下,我希望使用基于事件的方法,因为我已经有一个SAX处理程序,它正在构建一个内部类似DOM的表示或进一步处理.但是,我有兴趣了解任何DOM或类似DOM的库,其中包含模型元素的精确位置信息.

有没有人用所需的精确度解决了这个问题,或者任何类似问题?

XML解析器将(并且应该)平滑某些事物,例如额外的空格,因此精确映射回字符流是不可行的.

您应该考虑获取词法分析器或“令牌流生成器”以获得更多细节,换句话说,请转到XML解析器下面的详细级别.

在java中有一些用于编写词法分析器的通用框架. This基于ANTLR 3的页面对lexer vs parser以及section one一些基本的XML Lexer示例进行了很好的概述.

我还想对具有Web界面的用户发表评论,也许您应该考虑使用纯客户端(即javascript)解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读