I'd say you are probably using the wrong tool. XPAth and SAX don't really work
together. You should look at XPP,
http://www.extreme.indiana.edu/xgws/xsoap/xpp/ it's quite fast, faster than
SAX, and low overhead. Or perhaps a XML Database solution.
Paul
Quoting "Karr, David" <[EMAIL PROTECTED]>:
How many nodes is your Xpath expression returning? If you're
essentially returning the vast majority of the nodes in the file, then
you're probably using the wrong tool for this job. That is, don't use
Xpath for this.
-----Original Message-----
From: Enric Jaen [mailto:[EMAIL PROTECTED]
>If you think there is bugs in the impl of XPath, please open a bug
>report at https://issues.apache.org/jira/secure/Dashboard.jspa
>and attach a valid test case that can demonstrate the problem.
I don't think is a bug. I rather think that XPATH builds a
DOM tree when returns a NodeSet (please correct me if I am
wrong). When the file is about 6MB the java memory crashes.
Two workarounds I have tried are to increase heap and divide
the xml file. Both solutions bring the evaluation limit
farther, but there is still a limit.
I think it would be possible an XPATH implementation for SAX,
such as Sequential XPATH, but I haven't gone deelply into this.
-Enric
On Fri, 13 Jan 2006, Enric Jaen wrote:
> Hello, I got an OutOfMemory when I evaluate an XPATH expression a
> large XML file.
>
> I am using this code:
>
> XPathFactory factory = XPathFactory.newInstance();
> XPath xpath = factory.newXPath();
> InputSource entities_is=new InputSource("file.xml");
> XPathExpression xpathExpr = xpath.compile(expr);
> return (NodeList)xpathExpr.evaluate(entities_is,
> XPathConstants.NODESET);
>
> I am not an expert of XPATH development, therefore I'd
appreciate if
> someone could give me an explanation of why is this error
happening.
> Is this because XPATH uses DOM internaly? If so, is there any
> implementation for XPATH for SAX? Is there any other
> explanation/solution?
>
> Thanks in advance for your help.
> -Enric