2012-03-10 4 views
0

В моем собственном бенчмарке, а также в других веб-ссылках JAXB работает быстрее для анализа XML-файлов по сравнению с библиотекой DOM. Однако, когда я попытался найти объект JAXB из его корневого объекта, его скорость разочаровывает по сравнению с DOM.Быстрый поиск объекта JAXB

Для поиска в JAXB я использовал библиотеку Apache JXPath, то есть класс JXPathContext и метод getValue(). Сравнительно, для поиска в DOM я использовал класс Document и метод getElementsByTagName(). Мой контрольный показатель показывает, что первый намного медленнее, чем позже.

Итак, вот дилемма, если я хочу быстро анализировать XML-файлы, я хочу использовать JAXB, но если я хочу быстро найти объект узла, я должен использовать DOM. Мне интересно, есть ли оптимальный способ сделать это, например, более быстрый метод для поиска объектов JAXB или дерева JAXB, чем JXPath.

Заранее благодарен!

ответ

1

Я пропустил здесь очевидное место?

JAXB маршалы к объектам Java. Объекты Java могут нести методы. Например, метод поиска. Это было бы намного быстрее, чем полагаться на кучу интроспекции, чтобы вынюхивать аннотации для общего метода, так как, вы можете пропустить нерелевантные части вашего XML по умолчанию. Еще лучше: вы можете оптимизировать сами структуры данных (объекты Java) для определенных поисковых запросов.

+0

Спасибо за хороший момент. Я, конечно, могу добавить выделенный метод поиска в класс root, но это не так хорошо, как библиотека DOM. Мне было интересно, существует ли общий способ поиска объекта в JAXB, например, класс DOM Document с аналогичной производительностью или, по крайней мере, быстрее, чем библиотека JXPath. –

Смежные вопросы