最佳答案
与构建像 DOM 解析器这样的树结构的解析器相比,SAX 和 StAX 这样的流 xml 解析器更快,内存效率更高。SAX 是一个 push 解析器,这意味着它是观察者模式的一个实例(也称为侦听器模式)。SAX 是第一个出现的,但随后出现了 StAX ——一个 pull 解析器,这意味着它基本上像迭代器一样工作。
您可以找到为什么在任何地方都喜欢 StAX 而不喜欢 SAX 的原因,但是它通常归结为: “它更容易使用”。
在 JAXP StAX 的 Java 教程中,模糊地将其描述为 DOM 和 SAX 之间的中间部分: “它比 SAX 更容易,比 DOM 更有效”。然而,我从未发现 StAX 比 SAX 更慢或者内存效率更低的任何线索。
所有这些让我想知道: 有没有理由选择 SAX 而不是 StAX?