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.
extraction_cleva.xml est un fichier de 28 Mo.
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(); }
Avez-vous une idée, est-ce que les requêtes XPath sont compatibles avec une parser Sax?
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)
Merci.
Partager