Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个关于 SAX 的相对一般的问题。我了解它是如何工作的,并且根据我读过的教程,我学会了通过拥有大量的数据成员来保持状态,比如 inNode 是布尔值,然后在每个事件处理程序中,检查每个布尔值并相应地处理参数.
对我来说,这似乎真的很低效,有没有更有效的方法或者这只是 SAX 的本质?
谢谢,克里斯
通常,您可以通过简单的标签堆栈来保持状态。
当你进入一个节点时,你推送。
当你离开一个节点时,你会弹出。
有时这比很多布尔值更好。相反,您检查堆栈以查看是否存在正确的上下文以保留正在解析的数据。
这就是 SAX 的工作原理。它专为低内存使用和更简单的处理而设计。如果您的代码变得过于复杂,您可能希望改用 DOM 模型。