Para buscar el contenido indexado por reglas de índice de búsqueda XML, defina
su texto de búsqueda de la siguiente forma elementName[attributeName='attributeValue'].
Añada este texto de búsqueda como un campo de consulta de atributo a su
RAMAssetQueryBuilder.
El resultado de las coincidencias XML concretas se puede recuperar por medio del
ArtifactSearchResults resultante.
Formatos de ejemplo para búsqueda dentro de datos XML.
- Buscar sin un elemento: attributeName='attributeValue'
- Buscar varios atributos definidos en un único elemento: elementName[attributeName1='attributeValue1'
attributeName2='attributeValue2]
- Buscar una vía de acceso completa: elementPath1/elementPath2[attributeName='attributeValue']
- Buscar texto dentro de un elemento: elementName[text()='textValue']
- El carácter comodín se podría utilizar también cuando busque documentos XML:
elementName[attributeName='attribute*']
//Realizar búsqueda en el contenido indexado XML
RAMAssetQueryBuilder query = new RAMAssetQueryBuilder(session);
//Asegurarse de que la búsqueda en los artefactos está activa
query.setSearchModes(SearchQuery.SEARCH_WITHIN_ARTIFACTS_FLAG);
//Texto de búsqueda de índice XML en el formato elementName[attributeName='attributeValue']
String searchText = "wsdl:definitions[targetNamespace='*example*']";
query.addQueryField(query.QUERY_FIELD_ATTRIBUTE, searchText);
//Realizar búsqueda
SearchResult result = session.getAssets(query);
//Obtener lista de coincidencias de activo
AssetSearchResult[] results = result.getAssetSearchResults();
for(int i = 0; i < results.length; i++){
// Para una coincidencia de activos, obtener la lista de coincidencias de artefacto
ArtifactSearchResult[] artifactMatches = results[i].getMatchingArtifacts();
for(int j = 0; j < artifactMatches.length; j++){
// Para una coincidencia de artefactos, obtener las coincidencias de índice XML
String[] xmlIndexMatches = artifactMatches[j].getMatches();
for(int k = 0; k < xmlIndexMatches.length; k++){
System.out.println("Match = " + xmlIndexMatches[k]);
}
}
}