Поиск XML с помощью кодов Java

#java #xml #xml-parsing

#java #xml #xml-синтаксический анализ

Вопрос:

У меня есть около 30 XML-файлов с правильным форматированием и огромным объемом данных. Я хочу выполнить поиск в этих XML-файлах для конкретной повторной отправки данных. Можете ли вы предложить какой-либо сайт или блог, который я могу использовать в качестве aguideline для решения моей проблемы.

Мне нужно выполнить поиск внутри каждого тега по ключевому слову, предоставленному пользователем. А также когда-нибудь конкретное имя тега, которое будет возвращать содержимое внутри тега в соответствии с запросом пользователя.

пример: a.xml , b.xml , c.xml

 inside a.xml 

<abc>
some content 
</abc>
  

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

Комментарии:

1. Если у вас есть XSD-файлы для этих xml-файлов, вы можете использовать JAXB. Для генерации кода используйте инструмент xjc из java / bin.

Ответ №1:

Я бы рекомендовал использовать XPath, который является SQL-подобным языком для поиска в XML-документах

http://www.ibm.com/developerworks/library/x-javaxpathapi.html

Комментарии:

1. Спасибо, Xpath был простым и полезным.

Ответ №2:

Используйте синтаксический анализатор SAX (нет необходимости перемещаться туда и обратно по документам плюс огромное количество данных, следовательно, не используйте анализатор DOM).

Смотрите руководство по этой ссылке.

Ответ №3:

Вы можете сохранить свои XML-файлы в базе данных XML (например, eXist), а затем запросить ее с помощью XQuery.

Комментарии:

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

2. Здесь есть два аспекта: (1) как пользователь вводит запрос в ваше приложение? (2) как ваше приложение выполняет этот запрос и возвращает результат пользователю? Мой ответ был нацелен на аспект (2): вы можете сохранить свой XML в базе данных XML, а затем использовать java API базы данных XML для запроса к нему sing XQuery, получить результат обратно и отобразить пользователю (в eXist также есть RESTful API). Аспект (1) — это совершенно другое дело: это проблема взаимодействия с пользователем и того, как упростить для вашего пользователя задание запроса.