Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Sehr große XML-Datei einlesen mit Java

Frage Entwicklung Java

Mitglied: Bierkistenschlepper

Bierkistenschlepper (Level 2) - Jetzt verbinden

08.05.2011 um 13:27 Uhr, 7971 Aufrufe, 3 Kommentare

Hallo,

ich soll für die Uni eine sehr große XML-Datei mit Java einlesen. Die Datei hat um die 200 MB. Es handelt sich um Kartendaten von OpenStreetMap. In Java scheint es ja eine ganze Menge von Möglichkeiten zu geben, XML zu verarbeiten. Welche Ist denn hier empfehlenswert? Ich brauche nicht alles aus der Datei, sondern erstmal nur Nodes und Ways. Von diesen brauche ich dann bestimmte Attribute. Es wäre also sinnvoll erstmal zu filtern.

Und was meinen die in den APIs immer mit Handler?

Gruß,
Bierkistenschlepper
Mitglied: Biber
08.05.2011 um 13:52 Uhr
Moin Bierkistenschlepper,

die beiden wichtigsten Strategien beim Java-Handling von XML-Strukturen sind DOM (Document Object Model) und SAX (Simple API for XML).

Konzeptioneller Unterschied:

Bei den ganzen DOM-Parsereien wird immer "das ganze XML-Document" in den Hauptspeicher geladen in irgendwelchen internen In-Memory-Strukturen.
Dann kann sausauschnell in dieser Tree-Struktur vorwärts/rückwärts gelesen/gesprungen werden, in der Hierarchie hoch/runtergedaddelt werden etc.

Beim SAX-Konzept wird nicht das ganze Dokument in memory gebeamt, sondern immr nur "vorwärts" eingelesen und es bleibt dem User/Java-Coder berlassen, wie er/sie reagiert, wenn sich ein neuer Knoten/ein Unter-Tag öffnet.
Vorteil: du brauchst beim "Lesen" dir nur die Knoten merken/übernehmen, die dich interessieren. ->dazu gibt es die angesprochenen Handler.
Nachteil - du liest nur in eine Richtung (vom Anfang bis zum Ende der Datei, kannst nicht rückwärts gehen).

In diesem Fall sollten also die Handler für "Nodes" und "Ways" diese Knoten auslesen und sich die Inhalte "merken" und verarbeiten, andere Unterknoten sollten nur gelesen werden vom Open-Tag bis zum Close-Tag, aber nicht "gemerkt" und nicht weiterverarbeitet werden.

Also lies bei SAX-Parsern weiter.

Grüße
Biber
Bitte warten ..
Mitglied: Bierkistenschlepper
08.05.2011 um 16:22 Uhr
Hi Biber, danke schonmal für die verständliche Antwort!

Ja, SAX ist definitiv das richtige, denn die Dateien sind nicht verschachtelt. Und wie genau liest SAX ein? Zeilenweise? Elementweise?
Bitte warten ..
Mitglied: Biber
08.05.2011 um 17:08 Uhr
Moin Bierkistenschlepper,

Zitat von Bierkistenschlepper:
Hi Biber, danke schonmal für die verständliche Antwort!

Und wie genau liest SAX ein? Zeilenweise? Elementweise?
Schade, Pink Floyd waren vermutlich vor deiner Zeit das Maß aller Dinge.

Damals gab es solche auch immer noch auf die IT-Belange passenden Songzeilen wie
Can you tell a green field
from a cold steel rail?
A smile from a veil?
Do you think you can tell?


Der Begriff "Zeile" ist ausserhalb des Sprachumfangs aller XML-Definitionen.
Es ist einer XML-Datei vollkommen Banane, ob die XML-Datei überhaupt aus mehr als einer Zeile besteht.
Es wird immer von <einTag> bis </einTag> geparst - also mit deinem Vokabular "elementweise".
Und die Handler (letzten Endes sind es ja Events) für verschiedene <einTag>s werden halt aufgerufen u.a. bei Ereignis "<einTag> beginnt" und "<einTag> endet hier".

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
XML
XML Datei Fehler? (1)

Frage von Patrick-IT zum Thema XML ...

Batch & Shell
Script zum XML Datei Umschreiben (12)

Frage von cberndt zum Thema Batch & Shell ...

PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

Windows Server
Windows Bereitstellungsdienst und .xml-Datei erstellen (1)

Frage von 131275 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...