Какой API парсера XML использует dom4j SaxReader? SAX или DOM?

На веб-сайте dom4j написано: «SAXReader создает дерево DOM4J из событий синтаксического анализа SAX». Что это значит? Является ли SAXReader анализатором DOM, который создает дерево полного XML-файла, или он обрабатывает XML-документ последовательно, как парсер SAX?

Вопрос 2: я могу использовать запросы XPath в SAXReader. Совместим ли XPath с парсерами SAX или DOM?


person Chen Zong    schedule 21.09.2011    source источник


Ответы (1)


Вся суть dom4j в том, что это модель дерева, альтернативная DOM. Было бы бессмысленно разбирать всю DOM только для того, чтобы преобразовать ее в dom4j. В любом случае эта страница дает понять, что парсер SAX используется для генерации dom4j.

Re: ваш вопрос по XPath. Вообще говоря, вам нужна древовидная модель для запуска XPath. Это означает что-то вроде DOM, dom4j, jdom или xom. Все это различные «объектные модели XML-документа». SAX - это совсем другое дело - это просто поток событий без объектной модели. Итак, правильная ментальная модель: используйте синтаксический анализатор SAX для создания объектной модели, а затем запустите XPath для этой объектной модели. Конечно, вы можете делать и другие вещи, но это естественный способ сочетания этих трех технологий.

person Mike Sokolov    schedule 21.09.2011