Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache Digester / 25 сообщений из 28, страница 1 из 2
23.10.2007, 17:54:22
    #34888902
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Вот вопрос возник. Есть желание заменить рукописный код загрузки данных из XML DOM самописанным кодом на что-нибудь более эффективное.

В текущем понимании для этого неплохо бы использовать Apache Digester. Вот одно смущает - библиотека относительно неновая и, допускаю, есть более интересные альтернативы.

Посоветуйте, пожалуйста, другие варианты, если есть.

P.s. для генерации XML используется Velocity, так что интересен только парсинг.
...
Рейтинг: 0 / 0
23.10.2007, 18:09:06
    #34888961
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Если неизвестен размер XML-файла и не сильно критично время, то надо смотреть только в сторону SAX. А ручками сделать структуру и обработчик несложно ...
...
Рейтинг: 0 / 0
23.10.2007, 18:13:00
    #34888979
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
mikkriВот вопрос возник. Есть желание заменить рукописный код загрузки данных из XML DOM самописанным кодом на что-нибудь более эффективное.
В текущем понимании для этого неплохо бы использовать Apache Digester. Вот одно смущает - библиотека относительно неновая и, допускаю, есть более интересные альтернативы.
Посоветуйте, пожалуйста, другие варианты, если есть.
Apache Digester мой самый любимый opensource проект. Эффективнее только сериализаторы, но там, как понимаешь, формат XML трудно контролировать.

mikkriP.s. для генерации XML используется Velocity, так что интересен только парсинг.
ИМХО, не самое удачное решение. Я когда-то тоже склонялся к этой связке (Digester/Velocity). И если digester себя более чем оправдал, то вариант с Velocity, вообще оказался паршивым. Минусы были обнаружены следующие.
1) Шаблон получался не красивый и сложно читаемый.
2) Красивое форматирование шаблона не очень-то совпадает с красивым форматированием XML результата. Приходилось выбирать между ними.
3) Надобность энкодить строки, привела к появлению кучи вызовов утилитного метода в шаблоне. Подозреваю что можно было сделать лучше, но код писал не я. Ты кстати как эту проблему решил?
...
Рейтинг: 0 / 0
23.10.2007, 18:13:53
    #34888980
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
IDVsbruckЕсли неизвестен размер XML-файла и не сильно критично время, то надо смотреть только в сторону SAX. А ручками сделать структуру и обработчик несложно ...
А Вы Digester в глаза не видели, надо полагать?
...
Рейтинг: 0 / 0
23.10.2007, 18:14:07
    #34888983
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Размер файлов небольшой, но время относительно критично. Но в данный момент используется Electric XML парсер, который фактически реализует самодельную DOM-модель, и его скорость устраивает.

Digester, насколько я понял из описания, работает как интеллектуальная обертка поверх SAX, так что производительность должна быть неплохой.

Что хочется:
1) избавиться от коммерческого парсера
2) упростить труд программиста
3) повысить скорость парсинга
...
Рейтинг: 0 / 0
23.10.2007, 18:16:11
    #34888996
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Blazkowicz3) Надобность энкодить строки, привела к появлению кучи вызовов утилитного метода в шаблоне. Подозреваю что можно было сделать лучше, но код писал не я. Ты кстати как эту проблему решил?
Я пока никак, даже не видел код, который это делает. Сейчас меня интересует чтение XML.
...
Рейтинг: 0 / 0
23.10.2007, 18:17:54
    #34889007
Олег Гапон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
...
Рейтинг: 0 / 0
23.10.2007, 18:19:21
    #34889017
Олег Гапон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
...
Рейтинг: 0 / 0
23.10.2007, 18:24:44
    #34889037
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Олег Гапон JAXB
Нет, однозначно. Кодогенерация нам не нужна в данном случае. Да и некоторую гибкость стоит сохранить, чтобы парсер не падал от добавления какого-нибудь служебного атрибута или элемента.
...
Рейтинг: 0 / 0
23.10.2007, 18:26:13
    #34889043
Олег Гапон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
дык..так не генерируйте
...
Рейтинг: 0 / 0
23.10.2007, 18:32:41
    #34889059
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
mikkriРазмер файлов небольшой, но время относительно критично. Но в данный момент используется Electric XML парсер, который фактически реализует самодельную DOM-модель, и его скорость устраивает.
Есть мнение, что на небольших файлах DOM ничуть не проигрывает SAX. Так что рекомендую взять максимально большой и среднего размера файлы и протестить их парсинг.

mikkriDigester, насколько я понял из описания, работает как интеллектуальная обертка поверх SAX, так что производительность должна быть неплохой.
Вот тут-то есть о чем поспорить. На файлах ближе к 1Мб и выше, скорость будет супер. Но вот если размер XML колеблется в районе 10-30Кб, я бы все же потестировал прежде чем менять. Мне кажется Digester может просесть на маленьких XML из-за необходимости искать по правилам. Если боротся за performance надо делать голый SAX или попрбовать StAX. Опять же все надо тестировать, на небольших файлах, результаты могут быть сюрпризом.

mikkri1) избавиться от коммерческого парсера
Какие плюсы заявляют его авторы?
mikkri2) упростить труд программиста
Тут конечно Дайджестеру равных нет. Но к сожалению он не панацея.
mikkri3) повысить скорость парсинга
Рекомендую поискать сравнительные анализы, их в гугле полно. На rsdn тоже проскакивали.
Потестировать самостоятельно на файлах нужного размера.
Посмотреть JiBX - он по маппингу генерит методы на уровне байт кода. По идее это даёт наибольший перфоманс.
...
Рейтинг: 0 / 0
23.10.2007, 18:36:18
    #34889074
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Йа использовал Castor. Вполне устроил как для парсинга, так и для рендеринга.
...
Рейтинг: 0 / 0
23.10.2007, 18:42:04
    #34889090
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Blazkowicz mikkri1) избавиться от коммерческого парсера
Какие плюсы заявляют его авторы?

Быстрый. Гугл тоже так думает. Проблема в vendor-lock in налицо, вендора купили, а потом купили того, кто его купил. Т.е. не горит, но лучше избавиться.

Blazkowicz mikkri3) повысить скорость парсинга
Рекомендую поискать сравнительные анализы, их в гугле полно. На rsdn тоже проскакивали.
Потестировать самостоятельно на файлах нужного размера.

ОК, будем тогда тестировать, прежде чем внедрять "новые" технологии.

BlazkowiczПосмотреть JiBX - он по маппингу генерит методы на уровне байт кода. По идее это даёт наибольший перфоманс.
Посмотрел бегло. Не очень нравится кодогенерация - не уверен, что будет легко получить одобрение на использование такой библиотеки. Хотя потестировать можно и даже, думаю, нужно.[/quot]
...
Рейтинг: 0 / 0
23.10.2007, 18:43:52
    #34889096
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Софтверный проктологЙа использовал Castor. Вполне устроил как для парсинга, так и для рендеринга.
Поискал в гугле. Такое мнение, что нет приемуществ у Castor, если не нужна полноценная сериализация/десериализация объектов.
...
Рейтинг: 0 / 0
23.10.2007, 18:44:49
    #34889099
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
mikkriПоискал в гугле. Такое мнение, что нет приемуществ у Castor, если не нужна полноценная сериализация/десериализация объектов.
А вам не нужна и никогда нужна не будет?
Возможности встраивать свои обработчики (де)сериализации тоже?
...
Рейтинг: 0 / 0
23.10.2007, 18:46:57
    #34889108
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Софтверный проктолог mikkriПоискал в гугле. Такое мнение, что нет приемуществ у Castor, если не нужна полноценная сериализация/десериализация объектов.
А вам не нужна и никогда нужна не будет?
Возможности встраивать свои обработчики (де)сериализации тоже?
1) Есть решение использовать Velocity для сериализации.
2) И что такого хорошего в своих обработчиках? Чем реализация своих обработчиков лучше использования подхода из Digester?
...
Рейтинг: 0 / 0
23.10.2007, 18:53:53
    #34889127
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
mikkri
1) Есть решение использовать Velocity для сериализации.
2) И что такого хорошего в своих обработчиках? Чем реализация своих обработчиков лучше использования подхода из Digester?
Я лично не сталкивался с Digester. Но, если бы столкнулся:
а) я не хочу писать ни строчки кода, отвечающей на правила десериализации — только в отдельном xml-файле;
б) я хочу иметь возможность гибко обрабатывать любые входные данные, например если во входном документе тэг <a></a> пуст, то в поле требуемого класса в это поле должно записаться значение "0" (к примеру), или иметь возможность преобразования значения поля в дату (в произвольном формате) — при этом не писать ни строчки кода, а только описывать это в отдельном XML-файле.

Digester всё это умеет?
...
Рейтинг: 0 / 0
23.10.2007, 18:59:45
    #34889138
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Софтверный проктологDigester всё это умеет?
Не уверен, но точно, что мне это не важно. Валидация значений в любом случае будет в Java коде, чтобы в случае чего можно было ошибки описать подробно, а не так - "Ошибка во входящем сообщении! Ничего делать не будем" :-).

XML используется для общения между внутренними системами, так что есть некоторый контроль над тем, как он выглядит.
...
Рейтинг: 0 / 0
23.10.2007, 19:09:29
    #34889163
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
mikkri
Не уверен, но точно, что мне это не важно. Валидация значений в любом случае будет в Java коде, чтобы в случае чего можно было ошибки описать подробно, а не так - "Ошибка во входящем сообщении! Ничего делать не будем" :-).

XML используется для общения между внутренними системами, так что есть некоторый контроль над тем, как он выглядит.
Я про валидацию ничего не говорил (которая тоже может выполняться правилами DTD или XML Schema).
Я говорил — сумеет Digester понять строку "2007-10-10 23:59:14.001" как дату и запихнуть её в переменную Date? Или вы собираетесь всё пихать в строки, а потом разбираться — чо как? :)
...
Рейтинг: 0 / 0
23.10.2007, 19:13:25
    #34889178
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Софтверный проктолог
Я про валидацию ничего не говорил (которая тоже может выполняться правилами DTD или XML Schema).
Я говорил — сумеет Digester понять строку "2007-10-10 23:59:14.001" как дату и запихнуть её в переменную Date? Или вы собираетесь всё пихать в строки, а потом разбираться — чо как? :)
Только валидатор в случае применения схемы или DTD отвергнет файл как невалидный, вместо того, чтобы подробно растолковать что не так и дать программе возможность выдать все детали в лог.

Да, нет задачи парсить даты на уровне XML парсера. Т.е. читать все значения как строки, а потом в Java коде их валидировать и кидать ошибки, если что-то не так.

Хотя, чисто теоритически, если б валидирующий парсер умел выявлять ошибки и репортить их вплоть до уровня, что собственно не так, думаю, можно было б сделать транслятор в человеческий язык.
...
Рейтинг: 0 / 0
24.10.2007, 08:17:43
    #34889782
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
BlazkowiczApache Digester мой самый любимый opensource проект.
C JAXB 2.0 не сравнивали?
...
Рейтинг: 0 / 0
24.10.2007, 10:54:28
    #34890246
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Leonidv BlazkowiczApache Digester мой самый любимый opensource проект.
C JAXB 2.0 не сравнивали?

Мне, как фанату JAXB, тоже очень интересно увидеть результаты тестирования быстродействия JAXB vs DOM, SAX, Digester и т.д.


Почему у автора такая неприязнь к кодогенерации? Ведь в момент этой самой генерации, делается просто куча работы, которую вы сейчас делаете руками. Ну добавили новый атрибут к какому-нибудь элементу.. и чего? Все равно вам придется писать код, который этот атрибут извлекает. В случае с JAXB писать Java код не придется, только добавить новый атрибут в схему и перегенерировать классы, при определенных навыках 30 сек.
...
Рейтинг: 0 / 0
24.10.2007, 12:07:54
    #34890614
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Я, как фанат работать ручками, зачему следующее. Проще добавить атрибут и добавить пару аннотацией, чем генерить все заново :)
...
Рейтинг: 0 / 0
24.10.2007, 12:28:30
    #34890744
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
LeonidvЯ, как фанат работать ручками, зачему следующее. Проще добавить атрибут и добавить пару аннотацией, чем генерить все заново :)

Ну так перекомпилиовать Java код все равно придется :)

Да и в целом, чем это добавление аннотаций, проще запуска скрипта? Причем у нас в проекте, вся эта генерация выполняется автоматически, во время сборки.
...
Рейтинг: 0 / 0
24.10.2007, 12:32:33
    #34890766
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache Digester
Leonidv BlazkowiczApache Digester мой самый любимый opensource проект.
C JAXB 2.0 не сравнивали?
Как я понимаю JAXB 2.0 не opensource проект, а как всегда у Sun - вендор-спецификация?
У меня точно такая же неприязнь к кодогенерации, как у mikkri.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache Digester / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]