Um
den mithilfe von XML-Suchindexregeln indexierten Inhalt zu durchsuchen,
definieren Sie den Suchtext im Format
Elementname[Attributname='Attributwert'].
Fügen Sie diesen Suchtext als
Attributabfragefeld für Ihr Objekt
RAMAssetQueryBuilder
hinzu.
Die Ergebnisse bis herunter zu den spezifischen XML-Übereinstimmungen
können über die resultierende Klasse
ArtifactSearchResults
abgerufen werden.
Beispielformate für die Suche in XML-Daten:
- Suche ohne ein Element: Attributname='Attributwert'
- Suche nach mehreren Attributen, die in einem einzigen Element definiert
sind: Elementname[Attributname1='Attributwert1' Attributname2='Attributwert2]
- Suche nach einem vollständigen Pfad:
Elementpfad1/Elementpfad2[Attributname='Attributwert']
- Suche nach Text in einem Element: Elementname[Text()='Textwert']
- Das Platzhalterzeichen kann auch bei der Suche nach XML-Dokumenten
verwendet werden: Elementname[Attributname='Attribut*']
//Suche in XML-indexiertem Inhalt ausführen
RAMAssetQueryBuilder query = new RAMAssetQueryBuilder(session);
//Sicherstellen, dass Suche in Artefakten aktiviert ist
query.setSearchModes(SearchQuery.SEARCH_WITHIN_ARTIFACTS_FLAG);
//XML-Indexsuchtext im Format Elementname[Attributname='Attributwert']
String searchText = "wsdl:definitions[targetNamespace='*example*']";
query.addQueryField(query.QUERY_FIELD_ATTRIBUTE, searchText);
//Suche ausführen
SearchResult result = session.getAssets(query);
//Liste der Assetübereinstimmungen abrufen
AssetSearchResult[] results = result.getAssetSearchResults();
for(int i = 0; i < results.length; i++){
//Für einen Assetabgleich die Liste der Artefaktübereinstimmungen abrufen
ArtifactSearchResult[] artifactMatches = results[i].getMatchingArtifacts();
for(int j = 0; j < artifactMatches.length; j++){
//Für einen Artefaktabgleich die XML-Indexübereinstimmungen abrufen
String[] xmlIndexMatches = artifactMatches[j].getMatches();
for(int k = 0; k < xmlIndexMatches.length; k++){
System.out.println("Match = " + xmlIndexMatches[k]);
}
}
}