Skip to Content

TU Wien Fakultät für Informatik DBAI Database and Artificial Intelligence Group
Top-level Navigation: Current-level Navigation:

Path: DBAI > Education > Semistrukturierte Daten > Übung

Tools: Drucken


Beispiel 3

Java, DOM und SAX

Laden Sie sich die Java Programm-Vorlage herunter und vervollständigen Sie die Methoden nach den entsprechenden Vorgaben.

Kommentieren Sie Ihren Source-Code! Beim Kontrollgespräch müssen Sie in der Lage sein die Funktionsweise des Programmes zu erklären und per Hand den Programmablauf anhand eines einfachen XML Fragmentes zu beschreiben.

Wenn Sie weitere Klassen benötigen, verwenden Sie Inner-Classes (Klassendefinition in einer Klasse), es soll nur eine Java Datei abgegeben werden.

Beachten Sie, dass SAX nicht garantiert, dass der gesamte Text-Inhalt mit einem einzigen Event gelesen wird! Treffen Sie entsprechende Vorkehrungen sollten Sie mit Text arbeiten.

Verwenden Sie keine absoluten Pfade in Ihrem Programm um die Lauffähigkeit auf dem Server zu gewährleisten!

Um eine Fehlerbehandlung brauchen Sie sich hierbei nicht zu kümmern.

Zum Testen können Sie folgende XML Dateien verwenden (die erwartete Ausgabe ist bei den Beispielen zu finden):

Beachten Sie, dass die XML Dateien im Browser eventuell anders dargestellt werden als sie wirklich sind. ZB werden Namespace Deklarationen entfernt… . Laden Sie die Dateien also auf Ihren Rechner und benutzen Sie einen einfachen Texteditor um die Dateien anzusehen.

bsp3DOM1 und bsp3SAX1 (jeweils 3 Punkte mit Namespacebehandlung)

Die Beispiele können entweder mit oder ohne Berücksichtigung von Namespaces gelöst werden, ohne Namespaces bekommen Sie jedoch nicht alle möglichen Punkte. Wenn Sie ein Beispiel ohne Berücksichtigung von Namespaces lösen, bekommen Sie pro Beispiel einen Punkt abgezogen.

Vervollständigen Sie die Methoden bsp3DOM1 und bsp3SAX1 so, dass ein übergebenes XML Dokument (Dateiname als String) wie folgt verarbeitet wird:

Eine eventuell zugehörige DTD oder Schema Definition muss nicht bearbeitet werden. Dass das Dokument nach der Bearbeitung nicht mehr zur DTD/Schema Definition passt, ist nicht relevant.

Verwenden Sie einmal einen DOM Baum (bsp3DOM1) und einmal einen SAX Prozessor (bsp3SAX1).

Die DOM-Variante soll das resultierende XML Dokument in die Datei bsp3_dom1_output.xml ausgeben. Die SAX-Variante soll das XML Dokument einfach auf die Konsole ausgeben (vergeben Sie einen plausiblen XML Header).

Für die DOM Variante ist die Methode renameNode von Document hilfreich.

Die Statistik wie viele Elemente/Attribute vorhanden sind soll bei beiden Teilaufgaben auf die Konsole ausgegeben werden.

Für die Abgabe: Überlegen Sie sich weiters welche Variante (DOM oder SAX) sich für welche Anforderungen besser geeignet hat. Überlegen Sie weiters welche Variante in welchen Fällen speicherintensiver ist.

Anmerkungen zur Namespace-Variante

Der Namespace Prefix soll nicht verändert werden, achten Sie weiters darauf, dass Namespace-Dekalarationen nicht verändert werden dürfen. Im Test-File darf zB xmlns:Foaf nicht auf xmlns:foaf oder gar auf XMLNS:FOAF geändert werden, Sie sollten daher den Prefix xmlns gesondert behandeln.

Bei SAX-Parsern kann es hilfreich sein, wenn Sie bei Ihrem XMLReader das Feature http://xml.org/sax/features/namespace-prefixes verwenden. Dadurch werden unter anderem die Namespace-Deklarationsattribute xmlns und xmlns:prefix in das Attributobjekt bei startElement() inkludiert.

Erwartete Ausgabe

Die Variante mit der Namespacebehandlung muss mit beiden Testdateien umgehen können, die Variante ohne Namespacebehandlung lediglich mit der ersten Testdatei.

bsp3DOM_SAX (5 Punkte)

Bei diesem Beispiel können Sie davon ausgehen, dass es keine Dokumente mit Namespaces als Eingabe bekommt. Es gibt hier auch keinen Zusatzpunkt für Lösungen mit Namespaces!

Vervollständigen Sie die Methoden bsp3DOM_SAX so, dass ein übergebenes XML Dokument (Dateiname als String) wie folgt verarbeitet wird:

Kümmern Sie sich in diesem Beispiel nur um Elemente, Attribute, Processing Instructions und Text. Alle anderen Knotentypen und Events brauchen Sie nicht zu beachten.

Beachten Sie, dass Character-Events in SAX mehrfach auftreten können, und nicht den gesamten Text-Inhalt auf einmal beinhalten. Treffen Sie entsprechende Maßnahmen, dass kein Text verloren geht.

Erwartete Ausgabe

XPath

Schreiben Sie für die folgenden Anforderungen jeweils eine XPath Anfrage auf dieses XML Dokument.

  1. Selektieren Sie alle Personen die 2007 eingestellt wurden und nicht im “Einkauf” arbeiten.
  2. Selektieren Sie alle Abteilungen (Positionen), in denen kein Mitarbeiter über 10.100 Euro verdient.
  3. Selektieren Sie die 3. Person die mehr als 10.000 Euro verdient.
  4. Selektieren Sie die 2. Person wenn sie mehr als 10.000 Euro verdient.
  5. Selektieren Sie die Person mit dem höchsten Gehalt (verwenden Sie keine Aggregatfunktionen bzw. XPath2!)
  6. Berechnen Sie das Gehalt der gesamten Abteilung “Einkauf”.
  7. Selektieren Sie alle Knoten im Namespace “http://www.buchhalter.tld” (verlassen Sie sich nicht auf den Präfix).
  8. Selektieren Sie alle Meldungen die keine schlechten Nachrichten enthalten (also kein Subelement “schlecht”).

Schreiben Sie die Anfragen in die Text-Datei xpath.txt. Sie können die Anfragen gerne kommentieren um beim Kontrollgespräch die Grundidee parat zu haben.

Die XPath Beispiele müssen jedenfalls unter der Berücksichtigung von Namespaces gelöst werden!

Für das Testen der XPath Anfragen können Sie das grafische Tool XPathTester 1.3 verwenden. Achtung, der XPathTester setzt nur XPath 1 um (verwenden Sie nicht die Version 1.4 des Programms – diese hat Probleme mit Namespaces)!

Kontrollieren Sie, ob Ihre Anfragen die richtigen Ergebnisse liefern. Vergessen Sie keinesfalls darauf, zusätzlich das File xpath.txt mit Ihren Lösungen auf dem Server im Unterverzeichnis “beispiel3” bereitzustellen.

Abgabe beim Tutor

Die Beispiele müssen bis zum Abgabetermin auf unserem Server (minteka.dbai.tuwien.ac.at) im Unterverzeichnis Beispiel3 verfügbar sein (die Dateien werden automatisch abgesammelt und den Tutoren zur Verfügung gestellt).

Insgesamt erstellen Sie also 2 Dateien (1 x XPath, 1 x Java).

Überprüfen Sie Ihre Abgabe direkt auf dem Server! Die notwendigen Tools sind installiert, und die Tutoren prüfen Ihre Abgabe ebenfalls direkt am Server. Laden Sie außer den Abgabedateien keine weiteren Dateien auf den Server!

Bewertung

Für das Beispiel 3 werden maximal 15 Punkte vergeben. Im Rahmen des Kontrollgespräches wird nicht nur die Korrektheit, sondern vor allem das Verständnis der Technologien kontrolliert.

Die volle Punktezahl gibt es nur wenn das Beispiel korrekt gelöst ist und die Lösung erklärt werden kann. Nicht selbstständig gelöste Abgaben werden jedenfalls mit 0 Punkten bewertet!


Home / Kontakt / Webmaster / Offenlegung gemäß § 25 Mediengesetz: Inhaber der Website ist das Institut für Logic and Computation an der Technischen Universität Wien, 1040 Wien. Die TU Wien distanziert sich von den Inhalten aller extern gelinkten Seiten und übernimmt diesbezüglich keine Haftung. Disclaimer / Datenschutzerklärung