|
Home - Programmieren - Java - Einfacher und überall einsetzbarer XML-Reader in JAVA
Hinweis: Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich. Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren. [Druckansicht] [Als E-Mail senden] [Kommentar verfassen] XML allgemein Die Struktur einer XML-Datei ist sehr einfach aufgebaut. Jedes Element wird mit <elementname> eingeleitet und mit </elementname> beendet. Dabei können beim Starttag noch zusätzliche Attribute angefügt werden. Etwa <elementname höhe="20" breite="20">. Standardmäßig sollten die Werte dieser Attribute mit Apostrophen (") abgegrenzt sein. Jedoch wird diese Konvention von vielen Programmieren (speziell bei HTML) nicht eingehalten. Der hier vorgestellte XML-Reader ignoriert diese Attribute derzeit noch, sollte jemand hier eine Änderung benötigen helfe ich gerne dies einzubauen. Doch nun zum XMLPullParser und -Writer. (Es empfiehlt sich parallel zu diesem Artikel den Code anzusehen, um diesen besser verstehen zu können. [pullparser.rar]) Der XML Pull Parser Das Paket besteht aus 3 Klassen, wobei der XML Pull Writer alleine funktioniert, und der XML Pull Parser die XML-Datei als XML-Element einliest und dieses XML-Element alle übrigen XML-Elemente enthält. Der XML Pull Parser besteht somit aus 2 Klassen. Der XML Pull Parser hat die Aufgabe den Stream der Datei oder URL zu öffnen und den Inhalt einzulesen. Dann sucht der Parser das erste Element, welches auch geschlossen wird. Also wird etwa der <xml …> Tag ebenfalls ignoriert, da wir annehmen, dass es sich um eine normale XML-Struktur handelt und die Codierung nicht außergewöhnlich ist. Im Falle von HTML wäre das der Bereich von <html> bis </html> bei RSS wäre es von <rdf attribute…> bis </rdf>. Dieses erste Element (welches alle übrigen Elemente umschließen muss) wird dann als XML-Element instanziert. Dieses XML-Element durchsucht den eigenen Textbereich und fügt sich selbst neue Subitems hinzu. Somit erhält man nach Ende des Parsens eine hierarchische Struktur, wie sie auch in der XML-Datei vorhanden ist. Die restliche Implementierung, also wie die XML-Elemente analysiert und ausgelesen werden, muss der User mit Schleifen selbst programmieren, was aber kein allzu großer Aufwand ist. Der hier vorgestellte XML Pull Parser ist also, wie oben beschrieben, die einfachste Möglichkeit eine XML-Datei zu lesen und daher habe ich absichtlich auf alle fehleranfälligen Methoden verzichtet. Der XML Pull Writer Der XML Pull Writer ist ähnlich einfach aufgebaut. Bei der Instanzierung gibt man einen Dateinamen an. Die Datei wird angelegt, oder überschrieben. Mit writer.StartDocument() wird der <xml..> Tag geschrieben. Hierbei wird als Codierung automatisch UTF-8 genommen (dies ist aber nur Alibihalber, da es für diesen Writer völlig egal ist). Um die Arbeit zu vereinfachen habe ich in allen Klassen, die ich speichern möchte eine toXML(XMLPullWriter writer) implementiert, damit sich jede Klasse "selbst speichern" kann. Hierbei sind zwei Methoden wichtig. Mit writer.startElement(String elementname) wird ein neues Element/Subelemente angefügt, bis es mit writer.endElement(String elementname) geschlossen wird. Dabei überprüft der XML Pull Writer, ob die Elemente ordnungsgemäß geschlossen werden, da er den Vorgang ansonsten abbricht. Um einen Wert in der XML-Datei zu speichern, muss man zwischen writer.startElement(..) und writer.endElement(..) die writer.outText(String wert)-Methode aufrufen. Um die Datei wieder zu schließen benutzt man writer.endDocument(), wobei auch hier überprüft wird, ob wirklich alle Elemente geschlossen wurden. Viel Erfolg beim Implementieren!!
|
Autoren:04150
Artikel:00819 Glossar:04124 News:13569 Userbeiträge:16268 Queueeinträge:05150
Projektsteuerung statt Anwesenheitskontrolle
MONDroid - your monitoring Solution for Android with PRTG-Support Red-Hosting jetzt mit erweitertem Shop-Webhosting-Angebot [Mehr News]
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
|