Bil*_*yer 9 java xml parsing sax jaxb
我想将一些格式良好的XML解析为DOM,但我想知道原始媒体中每个节点标记的偏移量.
例如,如果我有一个XML文档,其内容类似于:
<html>
<body>
<div>text</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想知道节点从原始媒体中的偏移13开始,并且(更重要的是)"文本"从偏移18开始.
这是否可以使用标准Java XML解析器?JAXB?如果没有容易获得的解决方案,那么在解析路径上需要进行哪些类型的更改才能实现这一点?
SAX API 为此提供了一种相当晦涩的机制——接口org.xml.sax.Locator。当您使用 SAX API 时,您可以将其子类化DefaultHandler并传递给 SAX 解析方法,并且 SAX 解析器实现应该将 a 注入Locator到您的DefaultHandlervia中setDocumentLocator()。随着解析的进行,您的各种回调方法ContentHandler将被调用(例如startElement()),此时您可以查阅 来Locator找出解析位置(通过getColumnNumber()和getLineNumber())
从技术上讲,这是可选功能,但 javadoc 表示“强烈鼓励”实现提供它,因此您可以假设 JavaSE 中内置的 SAX 解析器会执行此操作。
当然,这确实意味着使用 SAX API,这没有人觉得有趣,但我看不到使用更高级别的 API 访问此信息的方法。
编辑:找到这个例子。
| 归档时间: |
|
| 查看次数: |
2452 次 |
| 最近记录: |