我正在尝试完成以下任务:
- 加载文档(完成)
- 首先深入了解文档深度并使用 JDK 中的 DefaultHandler 做一些工作
我想这样做的原因是我已经有了我的处理程序,现在我将它与 SAX 解析器一起使用。我现在想在内存文档上使用处理程序。
请注意,这在以下方面很有用:我必须多次使用处理程序。对于大型文档,我想使用 SAX,对于小型文档,我想使用内部表示。
谢谢!
完成此操作的最快方法(快速编码)是将您希望使用 SAX 解析的内部文档部分写入内部字符串,然后使用StringReader
基于该字符串的 a,使用您的处理程序将其传递给 SAX 解析器.
您真正需要的是根据您的数据生成 SAX 事件并将这些事件提供给处理程序。您可以通过将数据转换为InputSource
or的形式,Reader
然后在解析中使用它来做到这一点,这是上面描述的策略,或者您可以通过直接调用ContentHandler
您已经编写的方法来简单地模拟 SAX 事件。但是,如果您的文档非常复杂,那么以正确的顺序调用它们并为它们提供正确的数据以完成您需要的工作可能会很痛苦。
如果 Dom4J 提供了一种InputSource
基于文档结构中的节点创建的方法,那将是最容易使用的,并且可能比首先将其写入字符串更有效。
您最好考虑将ContentHandler
执行实际工作的部分提取到一个单独的类中,您可以从ContentHandler
该类和遍历内部树的新类中使用该类。