1

我有一个关于 SAX 的相对一般的问题。我了解它是如何工作的,并且根据我读过的教程,我学会了通过拥有大量的数据成员来保持状态,比如 inNode 是布尔值,然后在每个事件处理程序中,检查每个布尔值并相应地处理参数.

对我来说,这似乎真的很低效,有没有更有效的方法或者这只是 SAX 的本质?

谢谢,克里斯

4

2 回答 2

2

通常,您可以通过简单的标签堆栈来保持状态。

当你进入一个节点时,你推送。

当你离开一个节点时,你会弹出。

有时这比很多布尔值更好。相反,您检查堆栈以查看是否存在正确的上下文以保留正在解析的数据。

于 2009-08-25T20:00:23.097 回答
0

这就是 SAX 的工作原理。它专为低内存使用和更简单的处理而设计。如果您的代码变得过于复杂,您可能希望改用 DOM 模型。

于 2009-08-25T19:30:59.240 回答