Поиск файлов XML с помощью xalan в Java - PullRequest
3 голосов
/ 16 января 2010

Мне нужно написать Java-приложение, которое выполняет поиск по ключевым словам по тегам и фактическим данным из многих XML-файлов.Из моих онлайн-исследований я чувствую, что должен использовать ксалан, но не могу понять, как его использовать или что он делает.Может ли кто-нибудь указать мне правильное направление?Спасибо

Ответы [ 4 ]

2 голосов
/ 16 января 2010

Xalan - процессор XSLT : он позволяет вам написать таблицу стилей XSL, которая преобразует ваш исходный XML-документ во что-то другое.

Конечно, вы можете написать XSL-преобразование, а затем выполнить поиск результата преобразования.

Другой вариант - проанализировать документ с помощью синтаксического анализатора XML, а затем использовать Lucene : см. Разбор, индексирование и поиск документов XML с помощью Digester и Lucene .

Вы также можете использовать XPath . Все зависит от того, чего именно вы хотите достичь.

2 голосов
/ 16 января 2010

Первое, что вам нужно сделать, это решить, какие данные вы на самом деле собираетесь искать. Вы говорите «внутри тегов и фактических данных» - значит ли это, что вы будете выполнять поиск по ключевому слову по имени элемента? Или имя элемента и содержание внутри него?

В зависимости от сложности ваших поисковых запросов вы, вероятно, захотите обратиться к реальной поисковой системе, например Lucene . Однако я скажу, что перед тем, как вы сделаете этот шаг, вам нужно много подумать о том, как вы планируете искать, чтобы создать соответствующий индекс.

Если ваши требования к поиску более просты, вы можете загрузить документы в DOM и использовать XPath . Я бы предложил попробовать это перед тем, как переехать в Lucene.

Вам не нужен Ксалан; JDK поставляется с анализаторами XML и оценщиком XPath. Я написал пару статей об их использовании: ( парсинг ), ( xpath ).

0 голосов
/ 16 января 2010

См. этот пост о том, как выполнить поиск, используя * XP3 * функцию XPath.

Что касается примера выполнения запроса XPath, я предлагаю посмотреть документацию по Java XPath . Вот пример кода, который они предоставляют:

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "/widgets/widget";
InputSource inputSource = new InputSource("widgets.xml");
NodeSet nodes = (NodeSet) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);

Это загрузит файл widgets.xml и вернет NodeSet всех узлов, соответствующих выражению.

0 голосов
/ 16 января 2010

Похоже, вы ищете реализацию XPath для Java. Это позволяет создать поисковое выражение и применить его к одному или нескольким XML-документам (которые, как правило, должны быть проанализированы). Xalan - это один из вариантов, но есть и другие. Версии Java, начиная с Java 5, включают синтаксический анализ XML и возможности XPath. Если вы используете последнюю версию Java и хотите просто проанализировать и выполнить поиск в наборе XML-документов, то вам, вероятно, ничего не нужно, кроме Java SDK.

См. Эту статью для хорошего (но несколько устаревшего) обзора возможностей XPath, которые поставляются «из коробки»: http://www.ibm.com/developerworks/library/x-javaxpathapi.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...