我想将一个非常大的 XML 文件加载到 DOM 树中(使用 JAXP),进行一些修改并在生成的 DOM 上运行 XPath 查询。
我们使用我们自己的 DOM 实现,它是使用延迟加载实现的(即一开始只从文件中加载 DOM 的前两层,如果调用 getChildNodes()/etc.,我们将返回文件并加载更多层)。这非常慢,但是,我们能够加载更大的文件,尤其是如果我们只使用文件的一部分。
我的问题:XPath 在 XML (afaik) 上使用了不同的视图。我很好奇默认的 Oracle JDK 实现现在是否正在将整个 DOM 文档转换为一些内部 XPath 文档(这真的很糟糕,因为它会急切地加载整个文档),或者 XPath 实现是否能够直接在我们的DOM 树(即,如果 XPath 可以在已加载的元素中进行评估,则无需进一步加载)。