La recherche du contenu indexé par XML s'effectue à l'aide de règles d'indexation
définissant le texte à rechercher sous la forme elementName[attributeName='attributeValue'].
Le texte à rechercher est alors ajouté en tant que champ de recherche d'attribut dans
RAMAssetQueryBuilder.
Les résultats peuvent être extraits via les
ArtifactSearchResults résultants.
Exemples de formats de recherche au sein de données XML.
- recherche sans élément : attributeName='attributeValue'
- recherche de plusieurs attributs définis dans un même élément : elementName[attributeName1='attributeValue1'
attributeName2='attributeValue2]
- recherche de l'intégralité d'un chemin : elementPath1/elementPath2[attributeName='attributeValue']
- recherche de texte au sein d'un élément : elementName[text()='textValue']
- Il est également possible d'utiliser le caractère générique lors de la recherche de documents XML :
elementName[attributeName='attribute*']
//L'on effectue une recherche dans du contenu indexé par XML
RAMAssetQueryBuilder query = new RAMAssetQueryBuilder(session);
//La recherche au sein d'artefacts doit être activée
query.setSearchModes(SearchQuery.SEARCH_WITHIN_ARTIFACTS_FLAG);
//Texte à rechercher dans les index XML sous la forme elementName[attributeName='attributeValue']
String searchText = "wsdl:definitions[targetNamespace='*example*']";
query.addQueryField(query.QUERY_FIELD_ATTRIBUTE, searchText);
//L'on effectue la recherche
SearchResult result = session.getAssets(query);
//L'on récupère la liste des actifs correspondants
AssetSearchResult[] results = result.getAssetSearchResults();
for(int i = 0; i < results.length; i++){
//Pour chaque actif correspondant, récupération de la liste des artefacts correspondant
ArtifactSearchResult[] artifactMatches = results[i].getMatchingArtifacts();
for(int j = 0; j < artifactMatches.length; j++){
//Pour chaque artefact correspondant, récupération des index XML correspondant
String[] xmlIndexMatches = artifactMatches[j].getMatches();
for(int k = 0; k < xmlIndexMatches.length; k++){
System.out.println("Match = " + xmlIndexMatches[k]);
}
}
}