Laden Sie sich die Java Programmvorlage 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 Programms zu erklären und anhand eines einfachen XML-Fragments den Programmablauf zu beschreiben.
Verwenden Sie keine absoluten Pfade in Ihrem Programm um die Lauffähigkeit auf dem Server zu gewährleisten!
Um eine Fehlerbehandlung brauchen Sie sich in dieser Übung nicht zu kümmern.
Zum Testen können Sie folgende XML-Dateien verwenden:
Beachten Sie, dass der Inhalt der XML-Dateien im Browser eventuell anders dargestellt wird, als er wirklich ist. Z.B. werden Namespace-Deklarationen entfernt, etc. Benutzen Sie daher einen einfachen Texteditor, um die Dateien anzusehen.
Die folgenden drei Beispiele können sowohl mit als auch ohne Berücksichtigung von Namespaces gelöst und abgegeben werden, die maximale Punkteanzahl können Sie jedoch nur mit der Berücksichtigung von Namespaces erreichen. Ohne Namespace-Behandlung wird ihnen pro Beispiel jeweils ein Punkt abgezogen.
Beispiel3.java
Vervollständigen Sie die Methode
dom(String filename)
so, dass ein übergebenes
XML-Dokument (Dateiname als String) wie folgt verarbeitet wird:
Eventuell zugehörige DTDs oder Schema-Definitionen müssen nicht bearbeitet werden. Dass das Dokument nach der Bearbeitung nicht mehr der Definition entspricht, ist hier nicht relevant.
Verwenden Sie zur Realisierung des Beispiels einen DOM-Baum. Das resultierende
Dokument soll in die Datei beispiel3-dom.xml
ausgegeben werden -
vergeben Sie einen plausiblen XML-Header.
Tipp: Sehen Sie sich die Methode
renameNode
der
Document
-Klasse genauer
an.
Am Ende der Durchführung soll die Statistik der Elemente/Attribute in der Konsole ausgegeben werden.
Anmerkungen zur Namespace-Variante:
Der Namespace-Prefix soll nicht verändert werden, achten Sie weiters darauf,
dass Namespace-Deklarationen erhalten bleiben sollen. In der Test-Datei darf
z.B. xmlns:DBai
nicht in xmlns:dbai
geändert werden,
Sie sollten daher den Prefix xmlns
gesondert behandeln. Auch soll
der Prefix bei Elementnamen erhalten bleiben. Aus soft:elementName
soll also soft:emaNtnemele
werden, und nicht etwa tfos:emaNtnemele
oder gar emaNtnemele:tfos
.
Erwartete Ausgabe:
Die Variante mit Namespace-Behandlung muss mit beiden Testdateien umgehen können, die Variante ohne Namespace-Behandlung lediglich mit der ersten der beiden Testdateien.
Vervollständigen Sie die Methode
sax(String filename)
so, dass das übergebene
XML-Dokument (Dateiname als String) gleich behandelt wird, wie im vorigen
Beispiel, mit folgenden Änderungen:
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:
Vervollständigen Sie die Methode
domsax(String filename)
so, dass ein übergebenes
XML-Dokument (Dateiname als String) wie folgt verarbeitet wird:
tiefe
erhalten, in dem seine
Tiefe im XML-Dokument festgehalten wird (Die Tiefe der Wurzel ist gleich ihrer Matrikelnummer,
die des ersten Unterelements gleich ihrer Matrikelnummer + 1 etc.).beispiel3-domsax.xml
ausgegeben werden (vergeben Sie einen plausiblen XML-Header).Kümmern Sie sich in diesem Beispiel nur um Elemente, Attribute, Processing-Instructions und Text. Alle anderen Knotentypen und Events müssen nicht beachtet werden.
Erwartete Ausgabe:
Generelle Tipps (DOM/SAX):
Wenn Sie weitere Klassen benötigen, so können Sie Inner-Classes (Klassendefinition in einer Klasse) verwenden. Dadurch ersparen Sie sich separate Java-Dateien, auf die Sie beim Hochladen achten müssen.
Beachten Sie, dass SAX nicht garantiert, dass der gesamte Text-Inhalt in einem einzigen Event gelesen wird! Treffen Sie entsprechende Vorkehrungen, sollten Sie mit Text arbeiten.
Schreiben Sie für die folgenden Anforderungen eine XPath-Anfrage auf dieses XML-Dokument.
Für das Testen der XPath-Anfragen können Sie das grafische Tool XPathWay (tar.bz2, zip) verwenden. Kontrollieren Sie, ob Ihre Anfragen die richtigen Ergebnisse liefern.
xpath.txt