Сравнение XmlReader и SAX Reader
Аналогично модулю чтения Simple API for XML (SAX), XmlReader — однопроходный курсор только для чтения.Он обеспечивает быстрый потоковый доступ к входным данным без кэширования.Он может считывать поток или документ.Класс позволяет запрашивать данные и пропускать записи, не представляющие интереса для приложения.Значительное различие заключается в том, что модель SAX является моделью принудительной отправки, в которой средство синтаксического анализа передает события приложению, каждый раз оповещая его о прочтении нового узла, а приложение, использующее XmlReader, может произвольно запрашивать узлы из модуля чтения.Преимущества модели Pull:
Преимущество |
Описание |
---|---|
Управление состоянием |
Для модели принудительной отправки обработчики содержимого должны строить очень сложные конечные автоматы.Для клиента модели Pull управление состоянием упрощается благодаря естественному нисходящему совершенствованию процедур. |
Несколько входных потоков |
Модель Pull позволяет клиентам соединять несколько входных потоков.Сделать это в модели принудительной отправки чрезвычайно сложно. |
Организация уровней |
Модель принудительной отправки может быть построена поверх модели Pull.Наоборот — невозможно. |
Устранение лишних копий строк |
Обычно данные считываются из буфера средства синтаксического анализа в строковый объект, который затем принудительно отправляется в буфер клиента.Модель Pull позволяет клиенту назначить для средства синтаксического анализа буфер, в который будет напрямую записана строка. |
Выборочная обработка |
Модель принудительной отправки оповещает клиента о каждом элементе, в том числе об атрибутах, инструкциях по обработке и пробелах, а модель Pull клиента может пропускать элементы, обрабатывая только те из них, которые представляют интерес для приложения.Это позволяет строить высокоэффективные приложения.Кроме того, заранее можно задать свойства, влияющие на обработку XML-потока (например, на нормализацию). |
См. также
Основные понятия
Чтение XML с помощью XmlReader