有点相关:来自 java 的 libxml2
是的,这个问题相当冗长 - 抱歉。我保持尽可能密集。我将问题加粗,以便在阅读整个内容之前更容易窥视。
为什么sax解析比dom解析快? 我唯一能想到的是,使用 sax 您可能会忽略大部分传入数据,因此不会浪费时间处理您不关心的部分 xml。IOW - 使用 SAX 解析后,您无法重新创建原始输入。 如果您编写了 SAX 解析器,以便它解释每个 xml 节点(并因此可以重新创建原始节点),那么它不会比 DOM 快吗?
我问的原因是我试图更快地解析 xml 文档。我需要在解析后访问整个 xml 树。我正在为要插入的第 3 方服务编写一个平台,因此我无法预测需要 xml 文档的哪些部分以及不需要哪些部分。我什至不知道传入文档的结构。这就是我不能使用 jaxb 或 sax 的原因。内存占用对我来说不是问题,因为 xml 文档很小,我一次只需要 1 个内存。解析这个相对较小的 xml 文档需要花费时间,这让我很头疼。我以前没有使用过 stax ,但也许我需要进一步调查,因为它可能是中间立场? 如果我理解正确, 这样一来,原来的解析时间可能会很快,但是每次我要求它遍历它尚未遍历的树的一部分时,那是处理发生的时间吗?
如果您提供回答大部分问题的链接,我将接受您的回答(如果我的问题已经在其他地方得到回答,您不必直接回答我的问题)。
更新:我用 sax 重写了它,它解析文档的时间平均为 2.1 毫秒。这是 dom 所花费的 2.5 毫秒的改进(快 16%),但这不是我(等人)猜到的幅度
谢谢