Posts Tagged ‘SAX — метод’

Java и XML

На этот раз я бы хотел поговорить о возможностях языка программирования Java для работы с данными, которые описаны в формате XML. Также мы подробно поговорим о сферах применения XML и о том, что этот формат описания данных дает нам с приземленной точки зрения. По ходу будут рассмотрены основные XML-парсеры для Java. Их существует огромное количество, поэтому под основными следует понимать те, которые лучше других зарекомендовали себя как таковые.

Начнем непосредственно с понятия анализа документа XML. Анализ — это разбор документа и разделение его на составляющие элементы. Анализ XML может проводиться как минимум двумя способами, каждый из которых хорош в определенных условиях и при определенных задачах. Эти способы правильнее было бы назвать методами разбора. В первом случае мы предварительно анализируем XML-документ и сохраняем дерево элементов XML в оперативной памяти. После этого, перемещаясь по названному дереву, мы можем получить любую интересующую нас информацию. Такой метод принято называть анализом по DOM (Document Object Model, DOM — объектное представление (модель) документа). Этот способ очень удобен для представления XML-документов и их изменения благодаря своей простоте и свободе перемещения по дереву DOM. Однако, в случае очень больших XML-документов для хранения их структуры в оперативной памяти потребуется слишком много ресурсов, что в некоторых случаях недопустимо. Понятно, что никаких ограничений на объем XML-документов в спецификации не предусмотрено (что вполне логично), поэтому использование tree-based метода анализа XML-документов не всегда является разумным решением.
Если первый метод разбора XML-документа основывался на представлении этого документа в виде структурированного дерева, то второй в корне от него отличается. Simple API for XML, SAX — метод, основывающийся на событиях (event-based). Использование SAX ограничивает круг анализируемых частей XML-документа. Т.е. возможен анализ только строго определенных элементов и подэлементов, при этом остальная часть XML-документа просто не рассматривается. Однако, ввиду данных ограничений у этого метода существуют также весьма ощутимые преимущества. Так, благодаря своей ориентированности на события, SAX дает заметный выигрыш не только в меньшем объеме потребляемых ресурсов оперативной памяти, но и в производительности в целом (скорость).
(далее…)