В чем разница между StAX Cursor API и Iterator API? - PullRequest
3 голосов
/ 25 июня 2011

Я наткнулся на два разных кода для разбора файла с StAX.Быстрое прибегание к поиску подсказало мне, что есть два способа анализа: использование API курсора и API итератора .Пожалуйста, скажите мне разницу между ними и тем, что легче использовать с точки зрения разработчика.

Ответы [ 2 ]

7 голосов
/ 25 июня 2011

Скорее всего, вы найдете ответ в разделах API StAX в учебном руководстве по Java Web Services Developer Pack или учебном руководстве по Java EE 5 . Они оба содержат ту же информацию, которую я воспроизводю ниже:

Сравнение API-интерфейсов Cursor и Iterator

Перед выбором между курсором и API итератора, вы должны отметить несколько вещи, которые вы можете сделать с API-интерфейс итератора, с которым вы не можете работать API курсора:

  • Объекты, созданные из подклассов XMLEvent, являются неизменяемыми и могут быть используется в массивах, списках и картах, и может быть передан через ваш приложения даже после того, как парсер перешел к последующим событиям.

  • Вы можете создавать подтипы XMLEvent, которые либо полностью новые информационные элементы или расширения существующие предметы, но с дополнительными методы.

  • Вы можете добавлять и удалять события из потока событий XML намного проще пути, чем с помощью курсора API.

Аналогично, придерживайтесь общего рекомендации при составлении ваш выбор:

  • Если вы программируете для особенно ограниченной памяти среда, как J2ME, вы можете сделать меньший, более эффективный код с API курсора.

  • Если производительность является вашим наивысшим приоритетом - например, при создании библиотеки низкого уровня или инфраструктура - курсор API больше эффективным.

  • Если вы хотите создать конвейеры обработки XML, используйте итератор API.

  • Если вы хотите изменить поток событий, используйте API итератора.

  • Если вы хотите, чтобы ваше приложение могло обрабатывать вставную обработку потока событий, используйте итератор API.

  • В общем, если у вас нет сильных предпочтений в одну сторону или другой, используя API итератора рекомендуется, потому что это больше гибкий и расширяемый, тем самым «будущее» ваших приложений.

API итератора, хотя и рекомендуется, медленнее, чем API курсора, так как курсору не нужно запоминать предыдущие узлы, которые он анализировал; он обеспечивает прямой анализ XML-документов и не требует дополнительных затрат на создание XMLEvent объектов. По-видимому, тест показал, что SAX может оказаться лучше при разборе больших документов по сравнению с StAX; Возможно, вы захотите проверить, можете ли вы воспроизвести результаты эталонного теста для ваших наборов данных.

0 голосов
/ 25 июня 2011

Если вы не анализируете длинные XML-файлы, вы можете просто использовать JDOM, JDOM загружает весь XML в память и работает медленнее, но его очень легко использовать.

JDOM

...