我阅读了一些关于 XML 解析器的文章,并遇到了 SAX 和 DOM 。
SAX 是基于事件的,而 DOM 是树模型——我不明白这些概念之间的区别。
据我了解,基于事件的意思是节点发生了某种事件。就像当一个人点击一个特定的节点时,它会给出所有的子节点,而不是同时加载所有的节点。但是在 DOM 解析的情况下,它将加载所有节点并制作树模型。
我的理解正确吗?
如果我错了,请纠正我或以更简单的方式向我解释基于事件的树模型。
好吧,你很接近。
在 SAX 中,在解析 XML 时触发事件。当解析器在解析 XML 时,遇到一个开始的标签(例如<something>),然后它触发tagStarted事件(事件的实际名称可能不同)。类似地,当解析 ( </something>) 时遇到标记的结尾时,它会触发tagEnded。使用 SAX 解析器意味着您需要处理这些事件并理解每个事件返回的数据。
<something>
tagStarted
</something>
tagEnded
在 DOM 中,解析时不会触发任何事件。解析整个 XML,并生成并返回 DOM 树(XML 中的节点)。解析后,用户可以导航树以访问先前嵌入在 XML 中的各个节点中的各种数据。
通常,DOM 更易于使用,但在开始使用之前需要解析整个 XML。