2010-01-16 4 views
3

J'ai besoin d'écrire une application java qui effectue une recherche par mot-clé dans les balises et les données réelles de nombreux fichiers xml. De mes recherches en ligne, j'ai l'impression d'utiliser xalan, mais je n'arrive pas à comprendre comment l'utiliser ou ce qu'il fait. Quelqu'un pourrait-il me diriger dans la bonne direction? MerciRechercher des fichiers XML avec xalan en Java

Répondre

0

J'ai l'impression que vous recherchez une implémentation XPath pour Java. Cela vous permet de construire une expression de recherche et de l'appliquer à un ou plusieurs documents XML (qui doivent généralement avoir été analysés). Xalan est une option, mais il y en a d'autres. Les versions de Java commençant par Java 5 incluent l'analyse XML et les fonctionnalités XPath. Si vous utilisez une version récente de Java et souhaitez simplement analyser et rechercher dans un ensemble de documents XML, vous n'avez probablement besoin de rien d'autre que le Java SDK.

Voir cet article pour un bon (mais un peu daté) aperçu des capacités de XPath qui viennent « de la boîte »: http://www.ibm.com/developerworks/library/x-javaxpathapi.html

0

Voir this SO post sur la façon de faire une recherche en utilisant la fonction XPath.

Comme pour un exemple sur la façon de faire une requête XPath, je suggère de regarder le Java XPath documentation. Voici l'exemple de code qu'ils fournissent:

XPath xpath = XPathFactory.newInstance().newXPath(); 
String expression = "/widgets/widget"; 
InputSource inputSource = new InputSource("widgets.xml"); 
NodeSet nodes = (NodeSet) xpath.evaluate(expression, inputSource, XPathConstants.NODESET); 

Ceci charger le fichier widgets.xml et retourner un NodeSet de tous les nœuds correspondant à l'expression.

2

La première chose que vous devez faire est de décider quelles données vous allez réellement rechercher. Vous dites "dans les balises et les données réelles" - cela signifie-t-il que vous ferez une recherche par mot clé pour un nom d'élément? Ou un nom d'élément et le contenu en son sein? En fonction de la complexité de vos requêtes de recherche, vous voudrez probablement utiliser un véritable moteur de recherche, tel que Lucene. Je dirai, cependant, qu'avant de prendre cette mesure, vous devez réfléchir à la façon dont vous envisagez de faire une recherche, afin de créer un index approprié.

Si vos besoins de recherche sont plus simples, vous pouvez charger les documents dans un DOM et utiliser XPath. Je suggère d'essayer cela avant de déménager à Lucene.

Vous n'avez pas besoin de Xalan; le JDK est livré avec des analyseurs XML et un évaluateur XPath. J'ai écrit quelques articles sur leur utilisation: (parsing), (xpath).

2

Xalan est un processeur XSLT: il vous permet d'écrire une feuille de style XSL qui transformera votre document XML source en autre chose. Il se peut que vous écriviez une transformation XSL et que vous recherchiez le résultat de la transformation.

Une autre option consiste à analyser le document avec un analyseur XML, puis à utiliser Lucene: voir Parsing, indexing, and searching XML documents with Digester and Lucene.

Vous pouvez également utiliser XPath. Tout dépend de ce que vous voulez accomplir exactement.

Questions connexes