XML Datei einlesen und Elemente in der Console ausgeben

Status
Nicht offen für weitere Antworten.

edfred

Mitglied
Hallo,

ich mache gerade meine ersten SAX Schritte und bekomme beim einlesen einer XML-Datei immer eine Exception und das egal wie groß die XML-Datei ist. Ich habe keine Ahnung wie ich dieses Problem beheben soll, weil ich keinen Fehler sehe, auch nicht beim debuggen.

Mein simpler Code sieht so aus:
Java:
import javax.xml.parsers.*;

import org.xml.sax.*;
import org.xml.sax.helpers.*;

import java.util.*;
import java.io.*;

public class XMLTest extends DefaultHandler{
	
	private String filename = "blah.xml";
	private HashMap<Object, Object> services;
	private boolean dtdValidation = false;
	public static void main(String[] args) {
		new ProcessContent();
	}
	
	@Override
	public void startDocument() throws SAXException{
		System.out.println("Begin of Document");
		services = new HashMap<Object, Object>();
	}
	@Override
	public void startElement(String namespaceURI, String localName,
                             String qName, Attributes atts) throws SAXException {
	    
		System.out.println( "namespaceURI: " + namespaceURI ); 
	    System.out.println( "localName: " + localName ); 
	    System.out.println( "qName: " + qName ); 
	    
	    // Attribute ausgeben
        for( int i = 0; i < atts.getLength(); i++ ) {
            System.out.print(" " + atts.getQName(i) + "=\"" + atts.getValue(i) + "\"");
		}
    }
	
	@Override	
	public void endDocument() throws SAXException {
		System.out.println("End of Document");
	}
	    
	public XMLTest() {
		SAXParserFactory parserFactory = SAXParserFactory.newInstance();
		parserFactory.setNamespaceAware(true);
		parserFactory.setValidating(dtdValidation);
		File xmlFile = new File(filename);
		
		try {
			SAXParser parser = parserFactory.newSAXParser();
			parser.parse(xmlFile, new XMLTest());
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
}

DIe Exception sieht so aus:
Code:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Vector.<init>(Vector.java:113)
	at java.util.Vector.<init>(Vector.java:126)
	at java.util.Vector.<init>(Vector.java:135)
	at java.util.Stack.<init>(Stack.java:30)
	at com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.<init>(XIncludeHandler.java:336)
	at com.sun.org.apache.xerces.internal.parsers.XIncludeParserConfiguration.<init>(XIncludeParserConfiguration.java:155)
	at com.sun.org.apache.xerces.internal.parsers.XIncludeParserConfiguration.<init>(XIncludeParserConfiguration.java:106)
	at com.sun.org.apache.xerces.internal.parsers.JAXPConfiguration.<init>(JAXPConfiguration.java:30)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.<init>(SAXParserImpl.java:125)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl.newSAXParser(SAXParserFactoryImpl.java:98)
	at XMLTest.<init>(XMLTest.java:49)
	at XMLTest.<init>(XMLTest.java:50)
	at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
	at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
	at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
	at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)
        at XMLTest.<init>(XMLTest.java:50)

Habe auch schon mit -Xms und -Xmx Variablen herumexperimentiert, aber das klappt auch nicht.
Wäre super wenn mir jemand weiterhelfen könnte. Danke schon mal im voraus.

Viele Grüße,
Edfred
 
S

SlaterB

Gast
im Konstruktor von XMLTest in Zeile 50 erzeugst ein weiteres XMLTest-Objekt, also wird nochmal der Konstruktor aufgerufen
-> im Konstruktor von XMLTest in Zeile 50 erzeugst ein weiteres XMLTest-Objekt, also wird nochmal der Konstruktor aufgerufen
-> im Konstruktor von XMLTest in Zeile 50 erzeugst ein weiteres XMLTest-Objekt, also wird nochmal der Konstruktor aufgerufen
-> im Konstruktor von XMLTest in Zeile 50 erzeugst ein weiteres XMLTest-Objekt, also wird nochmal der Konstruktor aufgerufen
-> im Konstruktor von XMLTest in Zeile 50 erzeugst ein weiteres XMLTest-Objekt, also wird nochmal der Konstruktor aufgerufen
-> im Konstruktor von XMLTest in Zeile 50 erzeugst ein weiteres XMLTest-Objekt, also wird nochmal der Konstruktor aufgerufen
...

normalerweise gibts dafür eine StackOverflowException,
du verbrauchst aber irgendwie so viel Speicher, dass der hier vorher zu Ende geht
 

edfred

Mitglied
Danke für die Antwort. Leider verstehe ich das Problem nicht ganz, denn ich rufe den Konstruktor nur ein Mal in der Main-Methode auf. Wie kann er denn dann mehr mals existieren?
Wenn ich das was im Konstruktor steht alles in die Main-Methode packe, dann bekomme ich eine FileNotFound-Exception.
Allerdings ist meine Datei genau da...Also ist das irgendwie wieder nicht nachvollziehbar ???:L
 
Zuletzt bearbeitet:
S

SlaterB

Gast
Zeile 50 liegt doch eindeutig im XMLTest-Konstruktor?
die main-Methode ist Zeile 14
 

edfred

Mitglied
Ja, ok. Ich hab es geändert...aber jetzt findet der die XML Datei im Dateisystem nicht...
Ein Teufelskreis...Wenigstens verstehe ich die Fehlermeldung jetzt. :)
 
J

JohannisderKaeufer

Gast
Was passiert wenn du Zeile 50 so

Java:
 parser.parse(xmlFile, this);

änderst?
 

edfred

Mitglied
Sorry, hab vergessen es zu posten. Ich habe das Problem gelöst. als ich
Java:
 file.getAbsolutePath()
aufgerufen habe, hat Java irgendwie einen Ordner im Pfad vergessen. Das habe ich nicht sofort gesehen. Jetzt habe ich den Pfad einfach manuell hinzugefügt und die Methoden der Handler-Klasse in eine eigene Klasse verlagert und es funktioniert. Warum Java nicht den richtigen Pfad angegeben hat ist mir ein Rätsel. Ich benutze Eclipse und Java hat den "src"-Ordner einfach ausgelassen. Dort befindet sich die Java-Dateien und die XML-datei zum parsen.

Vielen Dank für eure Hilfe,
Edfred
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
I Mit Hibernate eine XML-Datei in eine Tabellenspalte einlesen. XML & JSON 1
R xlsx-Datei mit Apache POI einlesen XML & JSON 18
S CSV Datei einlesen und XML Ausgeben XML & JSON 2
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
K Einlesen eines Parameters aus HTML-Datei XML & JSON 4
D Wie XML Datei einlesen und HTML entities übernehmen? XML & JSON 3
F XML Datei in Java einlesen XML & JSON 4
H xml-Datei mit Attributen einlesen XML & JSON 3
J XML-Datei ein Array einlesen XML & JSON 10
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
S Einlesen einer xml Datei XML & JSON 4
S XML Datei einlesen, aber root überspringen XML & JSON 2
G Newbe - Frage.XML - Datei einlesen und speichern XML & JSON 2
M mit JDOM XML-Datei einlesen, die nicht "well-formed&quo XML & JSON 3
P OutOfMemoryError beim Einlesen einer XML-Datei XML & JSON 7
T Tags in XML Datei mit Java erstellen XML & JSON 3
S XML Datei speichern nicht möglich XML & JSON 13
M Objekt zu jsonArray in .json datei hinzufügen ? XML & JSON 3
MiMa Buch Metadaten aus XML Datei parsen XML & JSON 48
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
S Validierung einer XML-Datei - Führende Leerzeichen und Tabs XML & JSON 10
U jar Datei mit ant erstellen XML & JSON 1
P wie kriege ich eine *.dtd Datei mit in die ausführbare *.jar? XML & JSON 2
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
D XML-Datei per Button erstellen XML & JSON 3
K JAR-File mit XML-Datei XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
E JTreedaten in eine XML Datei speichern XML & JSON 3
D Int-Werte in XML-Datei schreiben (DOM) XML & JSON 2
B xsd-Datei ins jar file XML & JSON 5
T Formulardaten in XML Datei speichern XML & JSON 5
H Wsdl datei XML & JSON 2
D Große XML-Datei in einzel Dateien splitten XML & JSON 3
S Neue Inhalte in XML-Datei einfügen XML & JSON 0
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S Xml File für den Aufbau einer anderen Xml Datei XML & JSON 6
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
J XML - Datei wird nicht ganz angezeigt XML & JSON 2
P (Eclipse)Ant Script, .jar Datei erstellen mit MANIFEST.MF XML & JSON 12
K Beim Parsen einer XML-Datei Connection timed out XML & JSON 4
E ResultSet als XML Datei speichern XML & JSON 7
M XStream, CSV Datei XML & JSON 9
A Frage zu bestehender XML Datei XML & JSON 6
A Simple Constructor Injection Datei-Pfad XML & JSON 6
Maxim6394 Lesen/Schreiben von XML Datei XML & JSON 9
A XML datei lesbar speichern (eingerückt) XML & JSON 7
M XML Datei Parsen XML & JSON 4
Airwolf89 HTML Datei mit SAXBuilder laden hängt sich auf XML & JSON 4
N Java Code aus XML Datei generieren XML & JSON 8
D Aus lesen einer XML-Datei ( 1 root, 3 childs) XML & JSON 7
R XLM Datei lesen Ändern (kompliziertes Search and Replace) und Speichern XML & JSON 12
K Kurze XML Datei Parsen XML & JSON 5
S XSD-Datei zulässige Werte auslesen XML & JSON 3
M XML Datei heapspace erreicht XML & JSON 3
M Große Datei auslesen/in dieser suchen XML & JSON 2
S Konforme XML Datei über XSD erstellen XML & JSON 2
M RSS-Datei auslesen von Yahoo Webservice XML & JSON 4
T Inhalt einer .xml Datei auf Javaoberfläche wiedergeben XML & JSON 4
M XML Datei drucken XML & JSON 8
T Daten aus Programm in XML Datei speichern XML & JSON 2
D XSD Datei erstellen XML & JSON 4
L [SAX] Geschachtelte XML Datei parsen XML & JSON 3
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
G txt. Datei in xml datei konvertieren XML & JSON 21
K XML Datei in ein Java package „einbinden" XML & JSON 3
L Reihenfolge beim xml Datei parsen einhalten? XML & JSON 8
L xml Datei parsen ohne End-Tag XML & JSON 6
C if-Abfrage mit Datei Variable aus XML-Datei XML & JSON 2
sylo Beim Erzeugen einer XML Datei auch die XML Struktur erzeugen? XML & JSON 11
sylo DOM Document in XML Datei schreiben XML & JSON 5
J Objektstruktur aus XML-Datei erzeugen XML & JSON 21
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
ARadauer Aus XML Datei Objekte erstellen... XML & JSON 3
N MalformedByteSequenceException bei Lesen aus XML Datei XML & JSON 2
A XML-Datei: Ab wann kritische Größe erreicht? XML & JSON 4
multiholle XML Datei elegant verarbeiten XML & JSON 14
M XMI-Datei auslesen XML & JSON 4
T Ließt keine XML Datei XML & JSON 2
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
M xml - datei erstellen XML & JSON 2
T Wie einen String(XML Inhalt) in eine XML Datei speichern? XML & JSON 8
H XML-Datei in einzelne XML-Dateien zerlegen XML & JSON 2
G Tags oder Zeilen der Not-Validen XML-Datei XML & JSON 7
C Suche in XML-Datei XML & JSON 6
D Zeilennummer in der XML - Datei XML & JSON 5
M Datei parsen XML & JSON 5
S PDF Erzeugung - Probleme mit der XML Datei bei Schema-Infos XML & JSON 2
T Werte in XML Datei an entsprechender Stelle einfügen XML & JSON 3
Saxony unbekannte XML Datei parsen und ausgeben XML & JSON 10
L XML Datei in Java angeben Pfad? XML & JSON 3
A Mehrere Anwender sollen auf eine XML-Datei zugreifen XML & JSON 4
A SVG Datei auslesen und Batik XML & JSON 1
N neue XML-Datei erstellen mit vorhandener Struktur XML & JSON 18
D XML Datei innerhalb einer JAR Datei parsen XML & JSON 2
M brauche große XML-Datei für XPath-Tests XML & JSON 4
L mit Java eine HTML-Datei erstellen XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben