Bonjour,

Je souhaiterais évaluer une expression XPath en utilisant un parser Sax car j'aurai à terme de gros fichiers à gérer.
J'ai trouvé le code suivant dans la FAQ XPath mais j'obtiens une exception "Java heap space" alors que le fichier ne devrait pas être chargé en mémoire.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
		try {
			// création de la source Sax
			InputSource source = new InputSource(new FileInputStream(
					"c:\\extraction_cleva.xml"));
 
			// création du XPath
			XPathFactory fabrique = XPathFactory.newInstance();
			XPath xpath = fabrique.newXPath();
			long currentTimeMillis = System.currentTimeMillis();
			// évaluation de l'expression XPath
			XPathExpression exp = xpath
					.compile("//POLICE[POL_NUMPOL ='004036941']/DOSSIER");
			Object resultat = exp.evaluate(source, XPathConstants.NODESET);
			System.out.println(resultat + " "
					+ (System.currentTimeMillis() - currentTimeMillis));
		} catch (XPathExpressionException xpee) {
			xpee.printStackTrace();
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
extraction_cleva.xml est un fichier de 28 Mo.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.getNodeObject(DeferredDocumentImpl.java:1067)
Avez-vous une idée, est-ce que les requêtes XPath sont compatibles avec une parser Sax?

Merci.