Inhalte zweier unterschiedlicher Klassen miteinander vergleichen (strcmp)
-
RyoShinzo schrieb:
Zum Thema: Wie liest du die DTD- bzw. XML-Datei denn erst ein?
Jeweils mit einer switch Anweisung
Hier mal ein Codefetzen... Das is jetzt nur besagte switch Anweisung für die DTD
ClElement *verarbeite(ifstream& datei) { char zeichen, letztes; char puffer[100]; int zaehler; enum zustandDTD zustandDTD = noise; ClElement *jetzt = NULL, *wurzel, *neu; for (datei.get(zeichen);!datei.eof();datei.get(zeichen)) { switch(zeichen) { case '<': zustandDTD=direktive; zaehler=0; break; case '>': if (zustandDTD!=noise) { if (letztes!=' ') { puffer[zaehler]='\0'; jetzt->addTag(puffer); } } zustandDTD=noise; break; case ' ': if (letztes==' ') continue; puffer[zaehler]='\0'; zaehler=0; switch(zustandDTD) { case direktive: if (strcmp(puffer,"!ELEMENT")) { cout << endl << "Diese Direktive verstehe ich nicht: " << puffer; zustandDTD=noise; } else zustandDTD=element; break; case element: neu = new ClElement(puffer); if (jetzt!=NULL) jetzt->setNext(neu); else wurzel=neu; jetzt=neu; zustandDTD=abhaengig; break; case abhaengig: jetzt->addTag(puffer); break; } break; default: if (zustandDTD!=noise) puffer[zaehler] = zeichen; zaehler++; break; } letztes=zeichen; } return wurzel; }