#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) — это совершенно другое дело: это проблема взаимодействия с пользователем и того, как упростить для вашего пользователя задание запроса.