gpt4 book ai didi

java - XML/Java : Precise line and character positions whilst parsing tags and attributes?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:39 26 4
gpt4 key购买 nike

我正在尝试找到一种在解析 XML 文档时精确确定标签和属性的行号和字符位置的方法。我想这样做,以便我可以准确地向 XML 文档的作者(通过 Web 界面)报告文档无效的地方。

最终我想将 a 中的插入符号设置为无效标记或仅在无效属性的左引号内。 (此时我没有使用 XML 架构,因为属性的确切格式很重要,无法单独通过架构进行验证。我什至可能希望报告某些属性在属性值的中途无效。或类似地,在开始和结束标记之间的文本中途。)

我试过使用 SAX (org.xml.sax) 和 Locator 接口(interface)。这在一定程度上有效,但还远远不够好。它只会在一个事件之后报告阅读位置;例如,对于 startElement(),紧接在打开标记结束之后的字符。我不能只减去标签名称的长度,因为属性、自闭合标签和/或打开标签中的换行符会把它扔掉。 (并且 Locator 根本不提供有关属性位置的信息。)

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

有没有人以所需的精确度解决了这个问题或类似问题?

最佳答案

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

您应该考虑获取词法分析器或“ token 流生成器”以获得更多详细信息,换句话说,转到 XML 解析器以下的详细级别。

有一些用于在 java 中编写词法分析器的通用框架。 This基于 ANTLR 3 的页面很好地概述了词法分析器与解析器和 section one一些基本的 XML 词法分析器示例。

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

关于java - XML/Java : Precise line and character positions whilst parsing tags and attributes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41968322/

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