为什么SAX解析器的startElement()是一个回调函数?

时间:2014-04-29 14:42:33

标签: xml callback sax

What is a callback function?上有回调方法的详细说明。根据它,假设函数A作为函数B的参数作为回调提供,然后当B由某个事件触发时,它调用A,,A将结果返回给B 。 现在我有一个解析xml文档的SAX解析器。它有几个回调方法,例如startElement(), endElement() ...我可以在其中执行操作,例如设置新节点。我的问题是,他们为什么称为回调?它们没有将任何结果返回给调用者,即解析器对象。

2 个答案:

答案 0 :(得分:4)

通常,一件需要完成某项工作的软件称为客户端,提供该服务的软件称为服务器。正常的交互模式是客户端在服务器上进行调用。更强大的交互形式是客户端提供服务器在特定事件发生时可以调用的代码(函数,方法)。这些被称为回调。

在这种情况下,应用程序是客户端,XML解析器正在提供服务。应用程序向解析器提供ContentHandler,以便在解析事件时调用。 ContentHandler是一组回调,因为它是解析服务调用的客户端应用程序的一部分。

答案 1 :(得分:1)

作为回调的本质更多的是控制转移而不是返回的值。

您有机会注册回调(也称为处理程序)来解析事件,例如遇到XML元素。一旦开始解析XML文档,SAX解析器将在遇到元素时调用您的回调/处理程序。 给您回电 ,提供有关其遇到的元素的信息。

另见What is Inversion of Control?