Поиск артефактов, индексированных XML

Для поиска данных, индексируемых по правилам индекса поиска XML, текст поискового запроса имеет форму имя-элемента[имя-атрибута='значение-атрибута']. Этот текст добавляется как поле поиска атрибута в RAMAssetQueryBuilder. Результаты до отдельных совпадений XML можно получить через объект результатов ArtifactSearchResults. Примеры форматов поиска в данных XML.
  • Поиск без элемента: имя-атрибута='attributeValue'
  • Поиск нескольких атрибутов элемента: имя-элемента[имя-атрибута-1='значение-атрибута-1' имя-атрибута-2='значение-атрибута-2']
  • Поиск по полному пути: элемент-пути-1/элемент-пути-2[имя-атрибута='значение-атрибута']
  • Поиск текста в элементе: имя-элемента[text()='текст']
  • Для поиска в документах XML можно использовать символ подстановки: имя-элемента[имя-атрибута='атрибут*']
				 // Поиск в индексированном содержимом XML
		 		 RAMAssetQueryBuilder query = new RAMAssetQueryBuilder(session);
				 
		 		 // Включение режима поиска в артефактах
		 		 query.setSearchModes(SearchQuery.SEARCH_WITHIN_ARTIFACTS_FLAG);
		 		 
		 		 // Текст поиска в индексе XML в форме имя-элемента[имя-атрибута='значение-атрибута']
		 		 String searchText = "wsdl:definitions[targetNamespace='*example*']";
		 		 query.addQueryField(query.QUERY_FIELD_ATTRIBUTE, searchText);
		 		 
		 		 // Выполнение поиска
		 		 SearchResult result = session.getAssets(query);
		 		 
		 		 // Получение списка ресурсов, соответствующих критериям поиска
		 		 AssetSearchResult[] results = result.getAssetSearchResults();
		 		 
		 		 for(int i = 0; i < results.length; i++){
		 		 		 // Получение списка артефактов ресурса, соответствующих критериям поиска
		 		 		 ArtifactSearchResult[] artifactMatches = results[i].getMatchingArtifacts();
		 		 		 
		 		 		 for(int j = 0; j < artifactMatches.length; j++){
		 		 		 		 // Получение для артефакта элементов индекса XML, соответствующих критериям поиска
		 		 		 		 String[] xmlIndexMatches = artifactMatches[j].getMatches();
		 		 		 		 
		 		 		 		 for(int k = 0; k < xmlIndexMatches.length; k++){
		 		 		 		 		 System.out.println("Match = " + xmlIndexMatches[k]);
		 		 		 		 }
		 		 		 }
				 }

Комментарии