Синтаксический анализатор XML, как и любой другой синтаксический анализатор, является инструментом, который преобразует из транспортного представления (в данном случае текстового) в то, к чему вы можете получить доступ из своего кода (в данном случае, дерева или серии событий синтаксического анализа). в зависимости от типа парсера).
В настоящее время существует два основных типа парсеров XML: DOM парсеры , которые создают дерево объектов в памяти из структуры XML, и последовательные парсеры , такие как как SAX .
Для парсера DOM парсер должен прочитать весь документ XML и построить объекты в памяти: узлы дерева, узлы атрибутов и т. Д. И поместить их в подходящую древовидную структуру, представляющую файл XML. Это имеет очевидные преимущества, такие как произвольный доступ ко всему дереву, но также имеет недостатки, главным образом, из-за того, что полное дерево должно находиться в памяти, которая для больших файлов также может быть довольно большой, и тот факт, что весь файл должен быть проанализирован прежде чем вы сможете начать работу над самими данными.
SAX, с другой стороны, представляет собой последовательный подход, который просто сканирует файл XML и генерирует события в зависимости от того, какие синтаксические элементы он находит, например, начальный тег, атрибут, конечный тег и т. Д. на основе этой информации также создайте древовидную структуру, но обычно этот подход намного проще: вы можете начать работу с данными, когда документ прочитан и проанализирован, и вам не нужно ждать, пока все это будет сделано. Однако вы не можете получить доступ ко всему дереву, если хотите. Вы можете прыгать вперед или назад внутри дерева и т. Д.
Идеальный подход для анализа XML-документа зависит от ваших конкретных потребностей приложения. Если вам приходится смотреть на произвольные места в дереве в разные моменты времени, то, очевидно, DOM - лучший способ. Однако, если ваш XML-документ имеет структуру, которая хорошо подходит для чтения от начала до конца и не нужно возвращаться снова, тогда SAX должен работать. Например, для отображения XHTML SAX будет правильным подходом, даже если вам все еще понадобится объектная модель в фоновом режиме. Но для демонстрации, как правило, достаточно просто посмотреть, какие теги используются, и отобразить их.