XOM v / s javax.xml.parsers - PullRequest
       13

XOM v / s javax.xml.parsers

4 голосов
/ 16 июня 2009

Я хочу прочитать простой файл XML. Я нашел Простой способ сделать XML в Java

Есть также несколько доступных парсеров, которые просто хотели убедиться, каковы преимущества использования парсера XOM над парсером солнца

Есть предложения?

Ответы [ 3 ]

6 голосов
/ 16 июня 2009

XOM является чрезвычайно быстрым по сравнению со стандартным W3C DOM. Если это ваш приоритет, нет ничего лучше.

Тем не менее, это все еще API-интерфейс типа DOM, поэтому он неэффективно использует память. Это не замена для SAX или STAX.

4 голосов
/ 22 июня 2009

Возможно, вы захотите проверить этот вопрос о лучшей библиотеке XML и ее верхнем (XOM) ответе; много деталей о преимуществах XOM. (Оставьте комментарий, если что-то неясно; Питер Штибранны, кажется, знает XOM от и до.)

Как уже упоминалось, XOM очень быстрый и простой в большинстве задач по сравнению со стандартным javax.xml. Для примеров см. этот пост в вопросе о простейшем способе чтения в XML-файле на Java. Я собрал несколько хороших примеров, которые заставляют XOM выглядеть довольно хорошо (и javax.xml довольно неуклюже) там. : -)

Итак, лично я оценил XOM после оценки (как вы можете видеть в связанных постах); для любого нового Java-проекта я бы, скорее всего, выбрал XOM для обработки XML. Единственный недостаток, который я обнаружил, заключается в том, что он не напрямую поддерживает потоковую передачу XML (в отличие от dom4j, откуда я пришел), но с простой обходной путь это может течь просто отлично.

1 голос
/ 16 июня 2009

Как вам нужен доступ к вашим данным?

Если это однопроходный процесс, вам не нужно строить дерево в памяти. Вы можете использовать SAX (быстро, просто) или StAX (быстрее, не так просто).

Если вам нужно сохранить дерево в памяти для навигации, XOM или JDOM - хороший выбор. DOM - это Выбор последней инстанции , будь то уровень 1, 2 или 3, с расширениями или без них.

Xerces, который является синтаксическим анализатором, включенным в Java (хотя вы должны получить обновленную версию от Apache и не использовать ту, что входит в комплект Java, даже в 6.0), также имеет потоковый собственный интерфейс, называемый XNI .

Если вы хотите подключить другие готовые детали в цепи, часто SAX или StAX работают хорошо, так как они могут построить свою собственную модель в памяти. Например, механизм Saxon XSLT / XQuery работает с DOM, SAX или StAX, но строит внутренне TinyTree (по умолчанию) или DOM (необязательно). DataDirect XQuery также работает с SAX, StAX или DOM, но действительно любит StAX.

...