[SAX] Utiliser XPath avec Sax
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:
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:
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.