关于SAX,我有一个相对一般性的问题。我理解它是如何工作的,根据我读过的教程,我已经学会了通过拥有大量像inNode这样的布尔值的数据成员来保持状态,然后在每个事件处理程序中,检查每个布尔值并相应地处理参数。
对我来说,这似乎真的很低效,有没有更有效的方法,或者这只是SAX的本质?
谢谢,克里斯
发布于 2009-08-25 20:00:23
通常,您可以通过拥有简单的标记堆栈来保持状态。
当你进入一个节点时,你按下。
当你离开一个节点时,你会弹出。
有时这比很多布尔值都要好。相反,您需要检查堆栈以查看是否存在正确的上下文来保存正在解析的数据。
发布于 2009-08-25 19:30:59
这就是SAX的工作方式。它是为低内存使用和更简单的处理设计的。如果您的代码变得太复杂,您可能希望改用DOM模型。
https://stackoverflow.com/questions/1330388
复制相似问题