Bonusblatt Aufgabe 1

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.

Bonusblatt Aufgabe 1
Hallo zusammen,

wenn ich folgendes mache:

U2I2Abstract.getSubTags(getDocumentElement(),“Person”);

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)?

Viele Grüße und einen guten Rutsch


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.


Es wird mir folgende Ausgabe geliefert:

#################### DONE INITIALIZING TESTS ####################
CHECKING ROOMS (at least some of them):
Room.tech.IMMD.zentr.021351 => 02.135-113
Room.nat.dma.zentr.h11 => H11

Wurden nun die Räume gefunden?


Nun, wie du schon selbst schreibst :wink: :

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 :#:

Attachment:
U2I2test.png: https://fsi.cs.fau.de/unb-attachments/post_137538/U2I2test.png


dann schauts gut aus :slight_smile:


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)

rofl: diesen N.N. kann man sogar anrufen ;)… und es gibt sogar eine Frau Dr. N.N.

Wie bei einer Tabellenkalkulation: Die erste Spalte ist immer „A“, egal welcher Wochentag namentlich in der Zelle stehen wird…

1 Like

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.

Gemütliche letzte Urlaubstage an alle :wink:


[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 :wink:


das heißt, falls entweder vorname oder nachname fehlt sollen wir - für den teil der fehlt - „N.N.“ als Platzhalter verwenden ?


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).


Room.tech.IMMD.zentr.bungsr

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…)


Ich sehe da keine Ausnahme - der Raum hat doch einen [m][/m]-name… oder?


Ach bin ich ein Vogel

Wenn man sich die Räume aus den holt, dann nicht. Deswegen war das so viel Aufwand -.-’

Edith sagt: Ich sollte es doch lieber umschreiben. Ist ja dann kein Act mehr.

Wird schon schief gehen :slight_smile:


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

Exemplarisch der Vergleich:

Original-HTML (thead):

 <thead>
                    <tr>
                        <th>Zeit\Tag</th><th class="day" colspan="6">Montag<br>(A)</th><th class="day" colspan="6">Dienstag<br>(B)</th><th class="day" colspan="6">Mittwoch<br>(C)</th><th class="day" colspan="6">Donnerstag<br>(D)</th><th class="day" colspan="6">Freitag<br>(E)</th><th>Tag/Zeit</th>
                    </tr>
                </thead>

                <thead>
                    <tr>
                        <th>Zeit\Tag</th><th class="day" colspan="6">Montag<br>(A)</br>
                        </th><th class="day" colspan="6">Dienstag<br>(B)</br>
                        </th><th class="day" colspan="6">Mittwoch<br>(C)</br>
                        </th><th class="day" colspan="6">Donnerstag<br>(D)</br>
                        </th><th class="day" colspan="6">Freitag<br>(E)</br>
                        </th><th>Tag/Zeit</th>
                    </tr>
                </thead>

Der Unterschied sind eigentlich ja die Breaks. Jedoch funktionieren sie in der Form, von daher.

Hier ist auf jeden Fall einmal ein Screenshot der Gegenüberstellung der Seite: http://abload.de/img/aud_u2i2u9jhc.png & Source: http://pastebin.com/vj0ccJQn

Wenn ich keinen Knick in der Optik habe, sind beide Seiten optisch gleich (getestet in iexplore, Chrome & Waterfox) Also, was ist da los?


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 :wink:

1 Like

Klar, aber dass es tatsächlich nur daran lag… meh.

Danke dir, jetzt ist der Haken grün.