Gibts Turbo C++ überhaupt noch? Das hab ich schon sehr lange nicht mehr gesehen. Tut jetzt aber auch nichts zur Sache.
Dein Problem ist nicht ganz einfach und recht aufwändig in der Implementierung. Es kommt halt drauf an wie weit man das treiben will.
Wie _n4p_ schon gesagt hat gibt es auch freie Bibliotheken, die sich mit dem Thema XML beschäftigen. Die Einarbeitung in solche Bibliotheken ist aber nicht zu unterschätzen, aber es lohnt sich durchaus, wenn du etwas Zeit hast. Es kommt jetzt hauptsächlich darauf an, wie fit du in C/C++ bist und wieviel Zeit du hast.
Ich würde mal den Fakt, dass es sich um eine XML Datei handelt aussen vor lassen. Hier geht es hauptsächlich darum, dass du ein paar Funktionen zum parsen der verschiedenen Tags findest.
Ich hab leider nur wenig Zeit, möchte dir aber einen möglichen Ansatz zeigen.
Zuerst musst du mal ein paar sinnvolle Strukturen finden, also zum Beispiel:
// datum
struct sDate {
unsigned char Day; // 1...31
unsigned char Month; // 1...12
unsigned Year; // 0...??
unsigned char Weekday;// 0..6 (0-Montag, ... , 6-Sonntag)
};
// eine einzelne Losung
struct sLosung {
sDate Date;
std::string Losungstext;
std::string Losungsvers;
std::string Lehrtext;
std::string Lehrtextvers;
};
// alle eingelesenen Losungen
std::vector<sLosung> Losungen;
Ich würde zuerst alle Losungen aus der Datei einlesen und in einem Array speichern. Eine spätere Suche wird so sehr viel einfacher. Das ist nicht sehr kompliziert.
Du brauchst also eine/mehrere Funktion(en), die die Datei zeilenweise einliest und nach bestimmten Tags sucht und diese auswertet (parsen).
Ich würde in etwa folgendes tun:
- finde das Tag <Losungen> (das Root-Tag einer Losung)
- lese alle Zeilen bis </Losungen>
jetzt haben wir alle relevanten Daten einer einzelnen Losung
- finde das Tag <Datum> und lese bis </Datum>
- parse das eingelesene Datum
- finde das Tag <WTAG> und lese bis </WTAG>
- parse den eingelesenen Wochentag
...
Du siehst sicherlich wo das lang geht.
Zu jeder fertig eingelesenen und geparsten Losung erstellst du eine Struktur, wie oben gezeigt und speicherst sie einem Array.
Das ganze wiederholst du so lange, bis alle Losungen eingelesen sind und strukturiert in einem Array vorliegen. Anschließend brauchst du nur noch eine Funktion, die dir zu einem bestimmten Datum die entsprechende Losung aus dem Array raussucht.
Ich hoffe das hilft dir etwas auf die Sprünge.
Gruß
Frobber