XPath und Parser (XML,XSLT)

bambam-cell

Grünschnabel
Hallo liebe Gemeinde!

Als Newbie hab ich da ein kleines verständnis Problem mit dem XPath. Ich hoffe jemand kann das mir beantworten. Zum hintergrund: Ich hab eine XML-Datei mit Daten. Die möchte ich mit Hilfe von Java einlesen und mittels XPath einige Sachen aus der Datei auspicken. Dazu benutze ich folgendens.

Code:
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathException;
import javax.xml.xpath.XPathFactory;
...
try
{			
	XPathFactory xpathF = XPathFactory.newInstance();
	XPath xpath= xpathF.newXPath();
                       
        String expression ="//log";
        InputSource inputSource = new InputSource("test.xml")
        NodeList aNodeList = (NodeList) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);
			
	for (int i=0; i<aNodeList.getLength(); i++) ...

Nun ist es ja so, das ich die test.xml Datei nicht geparst habe, und einfach der xpath.evaluate Methode übergebe.

Meine Frage: Was macht nun XPATH? Baut XPath das ganze Dokument als DOM-Objekt oder nicht. Wie wird oder als was wird der inputSource behandelt. Falls XPATH das ganze Dokument doch als DOM-Tree aufbaut, wie kann ich das eventuell mit SAX machen. Denn es wird so aussehen das die Datei ein Größe von 100 bis 300 MB haben wird.

:confused:

thx.
 
Hallo,

bei dem Ansatz wird leider das DOM des XML Files aufgebaut ... wenn du sehr große XML Dateien mit XPath bearbeiten mußt bleibt dir wohl nichts anderes übrig als das große XML Dokument entweder zu Splitten, die XPath Ausdrücke anzupassen und Häppchenweise einzulesen.

Wenns nur darum geht an die Information von speziellen Elementen zu kommen könntest du auch einen SAX/StAX Parser bemühen und dir die Informationen selber aus den jeweiligen Elementen rausziehen... jedoch vorsicht alle Elemente die du zum untersuchen "anfasst" werden in den Speicher geladen...

Gruß Tom
 
Zurück