2010-08-11 4 views
2

Какие версии Java JAXP XPath доступны? Реализация по умолчанию, Xalan (поставляется с JVM), очень медленно оценивает выражения XPath, поэтому я ищу более быструю реализацию.Какие доступны реализации Java JAXP XPath?

+3

Я использовал xpath Saxon с привязками JAXP. Я не пытался сравнивать производительность. Перед вызовом XPathFactory.neweInstance необходимо установить системное свойство "javax.xml.xpath.XPathFactory:" + OBJECT_MODEL в "net.sf.saxon.xpath.XPathFactoryImpl". Обратите внимание, что объектная модель по умолчанию отличается. Если вы хотите, чтобы код, обрабатывающий возвращаемые значения, был таким же и переносимым, вам нужно использовать DOM_OBJECT_MODEL. И вам нужно явно передать узел DOM в XPath.evaluate. Если вы попытаетесь вычислить InputSource, он не вернет результаты DOM, даже если это запрошенная объектная модель. –

+1

Вы также можете подумать, можете ли вы переключиться на Joost & stxpath, , который является потоковой моделью: http://joost.sourceforge.net/ (Я еще не пробовал это сам, но это следующее, что я посмотрим.) –

ответ

3

Я пытался Saxon, как Стивен Д. Маевский рекомендовал, и она работала очень хорошо. Производительность намного превосходит Xalan (реализация по умолчанию, поставляемая с JVM). Кроме того, проведя некоторое исследование, я обнаружил, что проект GNU JAXP имеет реализацию для JAXP XPath API, хотя я его не тестировал.

1

Вы можете посмотреть на VTD

+0

Это интересный проект, но это не реализация JAXP XPath API. –

+0

JAXP, как известно, является плохим с точки зрения производительности/использования памяти –