Здравствуйте, BOSSSS, Вы писали:
BOS>Уважаемые, разъясните пожалуйсто, какой парсер является оптимальным?
Парсер чего? XML? Ведь есть много разных форматов которые надо парсить.
BOS>С точки зрения скорости обработки, удобный в использовании?
Зависит сугубо от задач. Думаешь откуда столько их разных? У каждого свои фичи и каждый оптимален для своих условий.
Значит основные 3 низкоуровневых типа
1) DOM — удобен в том случае когда дерево XML нужно хитороумно модифицировать. Но для многих решений не подходит совсем из-за требований к размерам XML и производительности вообще. Часто бывает оптимальнее десериализовать XML (через SAX) в Java объекты, модифицировать их, а потом сериализовать обратно в XML.
2) SAX — не очень удобен в использовании. Но при этом его мало волнует размер поступающего XML.
3) StAX / XML pull parsing — почти так же удобен как DOM и быстр как SAX. То есть объединяет лучшее из двух подходов. Но я его ещё не использовал на практике.
Потом идут высокоуровневые надстройки над этими типами.
1) Обертки. (JDOM, DOM4J) предоставляют более удобный API. Но при этом близки к низкоуровневой работе с XML.
2) Мапперы. (JiBX, Digester, Castor) — требуют дополнительной работы чтобы указать как именно XML преобразовать в нужные объекты. Основной плюс — промежуточный слой в виде маппинга. Который почти разрывает зависимость между структурой объектов и структурой XML.
3) Сериализаторы (XStream, XMLEncoder/XMLDecoder и многие другие). С такими инструментами даже не нужно напрягаться, создавая маппинг. Они сами сделают какой-то XML из объекотв или какие-то объекты из XML. Недостаток — сильная зависимость струтур XML и объектов.