Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Lesen von richtig großen XML Dateien

Das Thema "Lesen von richtig großen XML Dateien" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 19.05.2011, 14:44   #1 (permalink)
Android-Hilfe.de Mitglied

Modell: Samsung Galaxy S & Motorola Milestone & T-Mobile G1

Registriert seit: 11.08.2010
Beiträge: 93
Abgegebene Danke: 19
Erhielt 0 Danke für 0 Beiträge
jskeletti eine Nachricht über ICQ schicken
Standard Lesen von richtig großen XML Dateien

Wie würdet ihr eine richtig große XML Datei am besten (und schnellsten) lesen und verarbeiten? In meinem Fall hab ich eine XML Datei mit mindestens 14000 Zeilen. Allein das laden und verarbeiten dauert um die 15-20 Sekunden, was für einen Benutzer viel zu viel Zeit ist. Ich würde das gern auf ein Minimum verkürzen. Hat jemand Erfahrung mit so etwas?

Mein Quellcode bisher:
PHP-Code:
try {
  
/* Create a URL we want to load some xml-data from. */
   
URL url = new URL("http://path/to/xml");

   
DocumentBuilderFactory dbf DocumentBuilderFactory.newInstance();
   
DocumentBuilder db dbf.newDocumentBuilder();
   
Document doc db.parse(new InputSource(url.openStream()));

   
NodeList nodeList doc.getElementsByTagName("utr");

   for (
int i 0nodeList.getLength(); i++) {
     for (
int j 0nodeList.item(i).getChildNodes().getLength(); j++) {                   
     
// Hier einfach nur ne Ausgabe im Logfenster, später Verarbeitung
     
System.out.println(nodeList.item(i).getChildNodes().item(j).getNodeName() + " = " nodeList.item(i).getChildNodes().item(j).getNodeValue());
     }
  }
} catch (
Exception ex) {
   
Log.e("Fehler"ex.toString());

jskeletti ist offline   Mit Zitat antworten
Alt 19.05.2011, 14:49   #2 (permalink)
Android Experte

Modell: HTC Hero

Registriert seit: 14.10.2009
Beiträge: 612
Abgegebene Danke: 18
Erhielt 42 Danke für 40 Beiträge
Standard AW: Lesen von richtig großen XML Dateien

Di verwendest DOM-Parser, welches eine Kompletten Objelt-Baum im Speicher anlegt
( Speicher vrebrauch hoch, viel Allokation usv - dauert lange )

Besserre vorgehensweise ist:
- SAX-Parser ( Push-Parser, Anwendung wird von Parser gertrieben, du muss einen Event-Handler schreiben )
oder
- Pull-Parser ( Parsen wird von AZnwendung ausgelöst, Anwendung holt einzelne Events ab )

Beide verbrauchen wesentlich weniger Speicher und sind somit schneller - und beide sind im Standart-Android enthalten.

Wenn es ganz schnel sein muss, nimmt man den Jackson XML Parser - ist schnellste was es zur Zeit gibt, aber eine externe Abhängigkeit
__________________
_____________________________________________
Meine apps: http://www.pribluda.de/android
Suche Schriftmuster von Prepaid-Auflade-Bons
ko5tik ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei ko5tik für diesen Beitrag:
jskeletti (19.05.2011)
Alt 19.05.2011, 14:55   #3 (permalink)
Android-Hilfe.de Mitglied

Modell: Samsung Galaxy S & Motorola Milestone & T-Mobile G1

Registriert seit: 11.08.2010
Beiträge: 93
Abgegebene Danke: 19
Erhielt 0 Danke für 0 Beiträge
jskeletti eine Nachricht über ICQ schicken
Standard AW: Lesen von richtig großen XML Dateien

Wo finde ich den Jackson XML Parser?
jskeletti ist offline   Mit Zitat antworten
Alt 19.05.2011, 14:57   #4 (permalink)
Android Experte

Modell: HTC Hero

Registriert seit: 14.10.2009
Beiträge: 612
Abgegebene Danke: 18
Erhielt 42 Danke für 40 Beiträge
Standard AW: Lesen von richtig großen XML Dateien

jackson.codehaus.org - aber ich würde eher XPP empfehlen, da es schon dabei ist. Jackson ist ein sehr schweres Geschütz
__________________
_____________________________________________
Meine apps: http://www.pribluda.de/android
Suche Schriftmuster von Prepaid-Auflade-Bons
ko5tik ist offline   Mit Zitat antworten
Alt 19.05.2011, 15:04   #5 (permalink)
Android-Hilfe.de Mitglied

Modell: Samsung Galaxy S & Motorola Milestone & T-Mobile G1

Registriert seit: 11.08.2010
Beiträge: 93
Abgegebene Danke: 19
Erhielt 0 Danke für 0 Beiträge
jskeletti eine Nachricht über ICQ schicken
Standard AW: Lesen von richtig großen XML Dateien

Ich probiere alle drei aus und meld mich nochmal :-)
jskeletti ist offline   Mit Zitat antworten
Alt 20.05.2011, 12:04   #6 (permalink)
Android-Hilfe.de Mitglied

Modell: Samsung Galaxy S & Motorola Milestone & T-Mobile G1

Registriert seit: 11.08.2010
Beiträge: 93
Abgegebene Danke: 19
Erhielt 0 Danke für 0 Beiträge
jskeletti eine Nachricht über ICQ schicken
Standard AW: Lesen von richtig großen XML Dateien

Leider bekomme ich folgenden Fehler bei SAX:

Zitat:
05-20 10:00:52.922: ERROR/Fehler(382): org.xml.sax.SAXException: Can't create default XMLReader; is system property org.xml.sax.driver set?
Wo muß ich dieses property setzen?
jskeletti ist offline   Mit Zitat antworten
Alt 20.05.2011, 12:29   #7 (permalink)
Android Experte

Modell: HTC Hero

Registriert seit: 14.10.2009
Beiträge: 612
Abgegebene Danke: 18
Erhielt 42 Danke für 40 Beiträge
Standard AW: Lesen von richtig großen XML Dateien

Kannst du etwas mehr con deinen Code posten?
__________________
_____________________________________________
Meine apps: http://www.pribluda.de/android
Suche Schriftmuster von Prepaid-Auflade-Bons
ko5tik ist offline   Mit Zitat antworten
Alt 20.05.2011, 13:44   #8 (permalink)
Android-Hilfe.de Mitglied

Modell: Samsung Galaxy S & Motorola Milestone & T-Mobile G1

Registriert seit: 11.08.2010
Beiträge: 93
Abgegebene Danke: 19
Erhielt 0 Danke für 0 Beiträge
jskeletti eine Nachricht über ICQ schicken
Standard AW: Lesen von richtig großen XML Dateien

Hab's gerade gelöst. So wird's gelesen:

PHP-Code:
try {
  
// Pfad zur XML Datei
  
URL url = new URL("http://path/to/xml");

  
// XMLReader erzeugen
  
SAXParserFactory spf SAXParserFactory.newInstance();
  
SAXParser sp spf.newSAXParser();
  
XMLReader xr sp.getXMLReader();
  
ContentHandler handler = new ContentHandler();
  
xr.setContentHandler(handler);

  
xr.parse(new InputSource(url.openStream()));
} catch (
Exception ex) {
   
Log.e("Fehler"ex.toString());

Wie die Geschwindigkeit ist, weiß ich allerdings noch nicht.
jskeletti ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Problem beim Kopieren von großen Dateien BavariaR Motorola Xoom Forum 16 11.05.2011 21:50
Transfer von großen Dateien per USB Iriador Archos 101 Forum 8 12.02.2011 23:31
Öffnen von Tiff und großen JPEG Dateien nicht möglich!? tunake Motorola Milestone Forum 4 19.07.2010 08:38
Kann keine großen Dateien mehr auf den internen Speicher kopieren Marjun Samsung Galaxy (I7500) Forum 7 01.05.2010 11:33
xml Dateien editieren mattmaso Root / Hacking / Modding für Motorola Milestone 0 08.02.2010 20:57




Du liest gerade: "Lesen von richtig großen XML Dateien" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.