Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
dann bekomme ich eine Liste die dementsprechend wie oft es im XML Dokument mit "[Person: null]
Wenn ich jetzt beispielsweise den firstName der Personen habe möchte, brauche ich dazu statt die getDocumentElement() die getElementById(elementId)?
Da sonst keiner antworten will, versuche ich es mal:
Zuerst etwas allgemeine Theorie: Das XML-Dokument hat eine baumartige Struktur (Bäume kennt ihr schon aus der Vorlesung), wobei jeder Knoten im XML-Doc unterschiedlich/beliebig viele Kinder haben kann, die Kinder unterschiedlichen „Typ“ haben können (z.B. Person, Room, Lecture, …) und jeder Knoten zusätzlich zu den Kindern auch mehrere benannte Attribute (z.B. „key=…“) haben. Die WURZEL des XML-Baums ist der Knoten, den man sich mit getDocumentElement() holt.
Nun etwas konkreter: Hat man sich die Wurzel einmal geholt, tut man sich leichter, wenn man die Kinder der nächsten Ebene jeweils mit der Methode [m]U2I2Abstract.getSubTags[/m] gezielt abruft und sich dann damit von Ebene zu Ebene „hinunterhangelt“… schaut euch dazu die „Demo“ in den vorgegebenen Methoden [m]filterParentLectures[/m] bzw. [m]collectTimetableData[/m] an ;)…
Nachtrag: Bei den Blättern gibt es im Prinzip nur zwei Möglichkeiten: Entweder hat das Blatt nur Attribute oder es hat einen Texteintrag.
Dieser Testfall prüft nicht alle Räume, sondern nur diese zwei…
In welcher Farbe bzw- mit welchem Symbol zeigt dein Eclipse dir den JUnit-Test namens [m]test_Step1[/m] in der Übersicht der ausgeführten Testfälle (gleich unterhalb des roten/grünen Blakens) an?
Grüner Haken ist gut ;)! Die anderen zwei sind böse :#: …
zu a/b) Sollen Räume/Personen auch zur Liste hinzugefügt werden, wenn der Raumname oder Vor- und Nachname fehlen? Und wenn ja, was soll dann als Platzhalter gesetzt werden?
zu c) Wie sollen die Buchstaben an den Wochentagen verteilt sein, wenn Montag nicht der erste Tag ist? Soll bei 1 dann Dienstag weiterhin B haben oder da Dienstag nun am Anfang der Tabelle ist A?
Raum ohne Kurzname: Nein (da er vermutlich ein UnivIS-[Export]-Fehler und daher zum Nachschlagen/Generieren sowieso ungeeignet ist) => siehe auch Zeile 177 in [m]U2I2Abstract[/m]
Person ohne ***name: Ja (sollte zwar auch nicht vorkommen, aber daraus kann man zumindest noch ein „N.N.“ machen - fehlt die Person komplett, gilt es ja als unbetreute Übung „uebnatext“ wie bei R-C2)
Um mal hier anzuknüpfen:
„Room.nat.dma.zentr.h11“ ist ja ein möglicher String, der zurückgegeben wird, wenn man im XML Baum nach einem Attribut frägt, richtig? Versuch mich gerade durch den riesigen XML Text zu lesen. Die XML Bäume haben alle die gleiche Struktur, demnach muss ich pro Knoten immer nach den selben SubTags suchen, oder? Hab irgendwie noch kein wirkliches Gefühl dafür.
Des weiteren erschließt sich mir noch nicht so ganz, wo denn die Namen der Personen zu finden sind. Die dozs sind ja nur mit einem Namen betitelt so weit ich das aus dem XML-Texten herauslesen kann.
[quote=alandgraf]Um mal hier anzuknüpfen:
„Room.nat.dma.zentr.h11“ ist ja ein möglicher String, der zurückgegeben wird, wenn man im XML Baum nach einem Attribut frägt, richtig?[/quote]
Richtig, mit [m]element.getAttribute(„key“)[/m] erhältst du „Room.nat.dma.zentr.h11“, wenn [m]element[/m] der entsprechende Knoten ist.
Richtig, bei den Räumen musst du immer nach dem Subtag „short“ suchen und bei Personen nach den Subtags „lastname“ und „firstname“.
In den verschiedenen „Person“-Knoten sind Subtags namens „firstname“ und „lastname“ zu finden. Diese enthalten die Namen. Es gibt allerdings auch ‚Personen‘ in den gegebenen XML-Dateien, die keine Vornamen besitzen
In diesen Fällen testen bislang weder die öffentlichen noch die gemeinengeheimen Tests den konkreten Inhalt dieser ***namen, d.h. es ist egal, was ihr stattdessen da eintragt (darf also auch ein Leerstring sein).
Dies ist doch bei dem ganzen Spaß die einzige Ausnahme, oder?
Darf man davon ausgehen, dass hinter “bungsr” kein System steckt und den ganzen Kram dann einfach mit .equals(“bungsr”) als “Übung / 01.252-128” einspeichern? (in weißer Voraussicht, dass der Kram später mal eine HTML-Datei sein soll…)
Nach dem ich das jetzt eben fertig geschrieben habe, ist mir eine Sache aufgefallen, die mir etwas böse auf den Magen schlägt:
Ich habe 3 Assertion-Errors bei den öffentlichen Testfällen:
Time: 4,172
There were 3 failures:
1) test_Step4b(U2I2PublicMainTest)
java.lang.AssertionError: <thead><tr><th ...>???</th>: Wrong number of children
in <th ...> of colum 1 expected:<3> but was:<2>
2) test_Step4c(U2I2PublicMainTest)
java.lang.AssertionError: Wrong number of children in <th> of the regular timeta
ble line, i.e. row 0 column 0 expected:<3> but was:<2>
3) test_Step4e(U2I2PublicMainTest)
java.lang.AssertionError: Wrong number of children in <td> of the RUes in C3R. e
xpected:<3> but was:<4>
FAILURES!!!
Tests run: 9, Failures: 3
Es gibt für den „br“-Tag kein schließenden Tag „ “. Da dies die Brwoser nicht kennen, wird auch nichts dargestellt für „ “ und der Browser streicht dieses schließenden Tag quasi in der Ansicht raus. Somit siehst du an der Ausgabe keinen Unterschied. Im generierten HTML-Code ist aber sehr wohl ein Unterschied (und ein Fehler da es „ “ ja nicht gibt.
Ich schätze mal, dass du einen SubTag „br“ erstellst und diesem dann Text hinzufügst. Für die Lösung des Problems musst du aber den Text einem anderen Element hinzufügen