这个方法在你有很多不同类型的XML文档要集中处理的情况下适用。它在XML文档比较小的情况下工作得最好,因为它是基于DOM解析器的,DOM会把整个文档读到内存里。我们的基本方法是当文档被传入时检查它,找出它是哪一种类型的文档,并把它分发给一个适当的处理器。
因为我们是按照文档的类型发送它们,我们需要找出它们的类型。最好的方法是适用文档类型的公共标识符。这是一个通用的、轻便的标识符,它标识的是官方的文档类型。适用系统标识符也是可能的,但是我们不使用这种方法,因为系统标识符通常引用一个文件的绝对路径,而它在不同的系统上又各不相同。
不幸的是,不是所有的XML文档都包含文档类型标识符。我们不能按照公共标识符来发送这类文档。作为替代,我们将按照root元素发送它们。
我们的引擎使用一个接口和映射文件的组合来实现发送机制。我们先定义一个通用的接口,每个文档处理器都实现它。我们的引擎将使用映射文件来查找对应的处理器,按照文档的公共标识符或者roor元素。一旦找到处理器,就实例化它,然后文档被发送给它进行处理。