C++ und XML Frage



  • Hi,

    ich besitze C++ Grundkenntnisse und soll für mein Studium nun ein Projekt erstellen in dem C++ ein XML File einliest und dort gespeicherte Informatioen (Bilder und Text) ausgibt. Das ganze soll in Visual C++ realisiert werden.
    Praktisch soll der Nutzer eine von x möglichen Optionen auswählen und dann soll eben das dazu passende Bild und der dazu passenden Text in einem GUI erscheinen. Klingt ja einfach, aber finde keinen Ansatz dazu.
    Mein Prof schrieb das das ganz rein durch String Verarbeitung (!?) gelöst werden soll.

    Jetzt habe ich im Netz schon nach Ansätzen gesucht, aber ich finde nichts über XML in Verbindung mit C++.
    Kann mir einer von euch einen Seite oder ein Buch nennen in dem erklärt wird wie man XML in C++ einliest und ausgibt und das über eine graphisches UI ?

    Wie gesagt Grundlagen sind mir soweit bekannt nur hier benötige ich wohl auch .net Funktionen (!?).

    Schonmal Danke an euch
    Sven



  • Du hast gar keine Ahnung, oder? Und das im Studium? Zumindest hör ich das so raus. "Hello world" ausgeben würde ich nicht als Grundkenntnisse bezeichnen.

    Dass du nichts zu XML und C++ findest, glaube ich dir auch nicht. Allein wenn du in Google "C++ xml" eingibst, wirst du in paar Sekunden mehr als genug finden. Hier mal eine Liste mit Bibliotheken, auf die schnelle gefunden:

    http://lars.ruoff.free.fr/xmlcpp/

    Ich nehme aber an, dein Prof will nicht, dass du eine Parser Bibliothek benutzt, sondern das durch "String Verarbeitung" löst... Das ist natürlich übel, aber auch kein Beinbruch. Sollte jetzt echt kein Problem sein, selber einen einfachen XML Parser zu schreiben.
    GUI mit Visual Studio wär erstmal MFC... Ich finde es grottenschlecht, aber für so ein einfaches Programm kann man das schon auf die Schnelle hernehmen. Was besseres wär QT, GTK, wxWidgets.
    Aber nochnmal. Ich finde es sehr peinlich, wenn man sowas VOR einem Studium noch nicht kann und dann auch noch Fragen stellt, aus denen man rausliest, dass man nur eine sehr abstrakte Vorstellung von dem ganzen hat.



  • Was ist den so peinlich daran es VOR einem Studium nicht zu können ? Man macht doch ein Studium um es zu lernen. Und mit Grundkenntnisse meine ich den ganzen Stack, Heap, Baum, Suche, Vererbung, Klassen, Funktionen usw. Kram. Nur diese Aufgabe ist mir unklar das sie eben damit so gar nix zu tun hat.
    Zudem mache ich ein Fernstudium und muss mir mein wissen immer selbst heranschaffen, der Prof hat mir grade mal Aufgabenstellung zugesandt.

    Finds schade das man hier gleich so unfreundlich wird.



  • Inditronic schrieb:

    Und mit Grundkenntnisse meine ich den ganzen Stack, Heap, Baum, Suche, Vererbung, Klassen, Funktionen usw. Kram. Nur diese Aufgabe ist mir unklar das sie eben damit so gar nix zu tun hat.

    Wie kann man den ganzen Kram kennen und keine Idee haben wie man eine xml Datei einlesen könnte? 🤡



  • Hallo Sven,

    Willkommen im C++-Forum. 😉

    Unter den C++-XML-Parsern, die Du hinter dem Link findest, den Dir Mechanics genannt hat, würde ich Dir die sogenannten 'low footprint' -Parser empfehlen. Die haben zwar nicht die volle XML-Funktionalität, aber die braucht man auch nicht unbedingt, wenn man XML-Dateien nur lesen will. Sie sind aber einfacher zu benutzen als die 'Full blown'-Parser.
    Definitiv weiß ich es von TinyXML und RapdiXML. Da kommt man recht fix rein.

    Inditronic schrieb:

    Mein Prof schrieb das das ganz rein durch String Verarbeitung (!?) gelöst werden soll.

    Ich hoffe er meint damit nicht das Parsen der XML-Datei. Das würde bedeuten, dass er selbst von C++ nicht wirklich Ahnung hat.

    Gibt es Vorgaben bezüglich der GUI? Mit Visual Studio in reinem C++ sehen ich spontan MFC, WTL und auch Qt als Optionen. Wenn Du so was aber noch nie gemacht hast, ist das alles zusammen ein ganz schöner Hub.
    Wieviel Zeit hast Du dafür?

    Gruß
    Werner



  • GUI Vorgaben gibt es nicht, nur einen Vorschlage des Prof. Zeit hab ich bis 20.Dezember, also noch eine Weile.

    Unde sein Script fängt mit dem Satz "Schreiben sie eine XMLClass, mit der sei eine XML Datei laden und entsprechend den Regeln von XML verarbeiten können."
    Dann steht was man machen soll und dann der Fett geschriebene Satz

    Lösen sie die Aufgabe alleine durch String Verarbeitung.

    Und gemacht hab ich sowas bisher nie, bisher hab ich eben nur die Sachen gemacht die man am Anfang vom Programmieren lernt, das komplexeste bisher war ein rekursiver Binärbaum.



  • Bezüglich XML Parser habe ich ein nettes Flowchart gefunden. Was haltet ihr davon (*Werner anschiel*)? http://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-in-c



  • Inditronic schrieb:

    Finds schade das man hier gleich so unfreundlich wird.

    Tut mir nicht leid. Außerdem wars noch gar nicht so unfreundlich 😉 Sowas soll man sicher nicht im Studium lernen. Niemand wir dir im Studium beibringen, wie du XML Dateien liest oder eine GUI baust. Und wenn doch, dann läuft da was falsch. Grad sowas muss man sich selbst beibringen. Und noch viel mehr. Mit der Einstellung wirst du mit dem Studium fertig und kannst viel weniger programmieren als viele Schüler hier im Forum. Und wie cooky gesagt hat (der auch zu den besagten Schülern gehört?), solltest du echt in der Lage sein, mit der Aufgabe etwas anfangen zu können und nicht komplett planlose Fragen stellen, die ich für jemanden der schon studiert etwas peinlich finde.

    out schrieb:

    Bezüglich XML Parser habe ich ein nettes Flowchart gefunden. Was haltet ihr davon (*Werner anschiel*)? http://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-in-c

    Hmm, interessante Idee, aber ich find sowas meist nicht wichtig genug. Zu 90% reicht es doch, eine XML "irgendwie" zu parsen, obs jetzt super schnell ist, oder noch die Validierung dabei ist, interessiert meist keinen. Aber wenn doch, dann ist so ein Flow Chart ganz nett.



  • Inditronic schrieb:

    Und sein Script fängt mit dem Satz "Schreiben sie eine XMLClass, mit der sei eine XML Datei laden und entsprechend den Regeln von XML verarbeiten können."
    Dann steht was man machen soll und dann der Fett geschriebene Satz

    Lösen sie die Aufgabe alleine durch String Verarbeitung.

    Hi Sven,

    kannst Du das Fach noch wechseln? 🙄
    Das ist nicht der erste Prof mit C++-Dummy-Kenntnissen, von dem wir hier erfahren.

    Ich versteh das so, dass Du keine fertige 'XML-Lib' nutzen, sondern das selber zusammenbasteln sollst. Den Background, den Du dazu benötigst ist - unabhängig von C++ - Kenntnis über Parser. Ich finde diese Seite über rekursive absteigende Parser ganz hilfreich. Das deutsche Pendant ist für Anfänger eher abschreckend.

    Vielleicht kann jemand von den Informatik-Profis noch sagen, mit welcher Art von Parser man einer XML-Datei am einfachsten zu Leibe rückt. Und mit 'Art' meine ich hier nicht DOM oder SAX sondern LL(n) oder recursive-descent oder Bottom-Up!?

    Gruß
    Werner



  • out schrieb:

    Was haltet ihr davon (*Werner anschiel*)? http://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-in-c

    find' ich gut 👍
    Das bestätigt auch das, was ich oben schon gesagt habe. Sven braucht weder volle XML-Fähigkeit noch hat er riesige XML-Dateien (das unterstelle ich jetzt mal). Also ist TinyXML sicher nicht falsch.

    Blöd ist bloß, das er es mit Stringfrickelei selber machen soll. Da nützt ihm TinyXML nix.

    Gruß
    Werner



  • Mechanics schrieb:

    Sowas soll man sicher nicht im Studium lernen. Niemand wir dir im Studium beibringen, wie du XML Dateien liest ...

    Hallo Mechanics,
    ich habe zwar keine Informatik studiert, aber ich weiß von Kollegen, dass Compilerbau dort ein Schwerpunkt ist oder zumindest sein kann. Und dort lernt man auch Parser kennen. Und mit Parserkenntnissen Code schreiben, der eine XML-Datei liest, ist einfach. Ohne diese Kenntnisse kann das eine ziemliche Pfriemelei werden.
    Ich kann mich an meine Versuche vor langer Zeit noch erinnern.

    Also man lernt im Studium vielleicht nicht unmittelbar wie man eine XMl-Datei liest, aber das was man da lernt ist sehr hilfreich, um das zu stemmen.

    @Sven - was studierst du eigentlich?

    Gruß
    Werner



  • Werner Salomon schrieb:

    Den Background, den Du dazu benötigst ist - unabhängig von C++ - Kenntnis über Parser.

    Richtig, aber "String Verarbeitung" hört sich für mich sogar so an, als ob er sowas wie indexOf und substr meinen würde und nicht einen richtigen Parser. Also, am besten eine andere Vorlesung aussuchen, wenn möglich.



  • Werner Salomon schrieb:

    ich habe zwar keine Informatik studiert, aber ich weiß von Kollegen, dass Compilerbau dort ein Schwerpunkt ist oder zumindest sein kann.

    Ja klar. Wobei XML Parsen jetzt nicht unbedingt der Schwerpunkt bei Compilerbau sein sollte. Ich meinte auch das ganz praktische Programmieren. Es gehört einfach dazu, dass Informatiker oder angehende Informatiker schon etwas programmieren können und in der Sprache ihrer Wahl auch mit XML und GUIs umgehen können. Und das lernt man nicht im Studium und sollte das auch nicht erwarten.



  • Inditronic schrieb:

    Mein Prof schrieb das das ganz rein durch String Verarbeitung (!?) gelöst werden soll.

    Dann frag am besten nochmal nach bevor du anfängst irgendwas mit einem fertigen XML Parser zu basteln.

    Wobei ich es auch ein wenig krass finde Studienanfängern nen Auftrag zu geben XML "fu Fuss" zu parsen.
    Wenn das verwendete Subset von XML ausreichend klein ist geht es aber vermutlich ohne all ZU grossen Mühe.

    Jetzt habe ich im Netz schon nach Ansätzen gesucht, aber ich finde nichts über XML in Verbindung mit C++.

    Och da gibt es genug, bloss werden meist fertige Parser verwendet, weil keiner Lust hat das selbst zu programmieren.

    Kann mir einer von euch einen Seite oder ein Buch nennen in dem erklärt wird wie man XML in C++ einliest und ausgibt und das über eine graphisches UI ?

    Vergiss erstmal die GUI, das ist ein ganz eigenes Thema.
    Konzentrier dich erstmal auf den XML Teil.

    Und wenn du zu Fuss XML parsen sollst, dann wirst du wohl nicht drumrum kommen dich etwas ins Thema XML einzulesen.
    Ein paar Grundlagenartikel zum Thema "recursive descent parser" schaden vermutlich auch nicht.



  • Mechanics schrieb:

    Es gehört einfach dazu, dass Informatiker oder angehende Informatiker schon etwas programmieren können und in der Sprache ihrer Wahl auch mit XML und GUIs umgehen können. Und das lernt man nicht im Studium und sollte das auch nicht erwarten.

    [OT]
    Hmmm...
    Weiss nicht.

    Klar kann man das argumentieren, aber... angesichts der Tatsache dass wir zu wenig fähige Programmierer haben, wäre es vermutlich nicht verkehrt in verschiedenen Studienrichtungen ala Informatik auch das Programmieren zu unterrichten -- und zwar ordentlich.

    Die Leute die sich selbst für die Materie interessieren würde man auch so durchbringen, und wenn dabei genug übrig bleiben so dass die Wirtschaft keine Inder importieren muss, dann wäre ich auch dafür das genau so zu regeln. Schliesslich sind die Leute die sich selbst für etwas interessieren und die nötigen Fähigkeiten im Selbststudium aneignen vermutlich sowieso die mit denen man dann später arbeiten will.

    Wenn dabei aber zu wenig übrig bleiben, und den Eindruck hab' ich im Moment, dann ist es etwas doof.
    [/OT]



  • Mechanics schrieb:

    Inditronic schrieb:

    Finds schade das man hier gleich so unfreundlich wird.

    Tut mir nicht leid. Außerdem wars noch gar nicht so unfreundlich 😉 Sowas soll man sicher nicht im Studium lernen. Niemand wir dir im Studium beibringen, wie du XML Dateien liest oder eine GUI baust.

    Natürlich lernt man soetwas im Studium!
    Zum Glück sind die allermeisten Studiengänge darauf ausgelegt, dass jeder ohne Vorkenntnisse einen Einstieg findet.

    Bei GUI/XML ist halt C++ das Problem, die Standardbibliothek ist ja abseits von absoluter Kernfunktionalität sehr mager. Bei uns haben wir Java programmiert, und da haben wir sowohl bei einer Aufgabe, die XML umfasst, also auch bei einer GUI-Aufgabe eine Reihe an Links bekommen, welche Klassen wie dafür genutzt werden müssen.



  • Inditronic schrieb:

    Finds schade das man hier gleich so unfreundlich wird.

    Mechanics poltert hier gerne rum und lässt raushängen was für ein toller Hecht er ist. Einfach ignorieren.
    Ich habe meine erste GUI nach dem Studium entwickelt. Mit XML Dateien hatte ich bis dahin auch nichts am Hut.

    Zum Problem: Ich würde nochmal nachfragen, ob der Parser selbst entwickelt werden soll. Das geht imho nicht aus der Aufgabestellung hervor. Falls ja: Ein Rekursiv Absteigender Parser ist nicht schwierig zu implementiern.



  • Also in den meisten Studiengängen muss man selbst Programmieren lernen. Wenn man es vorher kann und das Studium besteht, kann man es nachher aber auch nicht unbedingt. Ein paar Kenntnisse wird man haben, aber XML parsen... wir haben das gemacht, aber ich habe es bereut, das gehört einfach nicht da rein, dafür ist es zu speziell. UI bauen auch, weil das von der Bibliothek abhängt.



  • Eisflamme schrieb:

    Also in den meisten Studiengängen muss man selbst Programmieren lernen. Wenn man es vorher kann und das Studium besteht, kann man es nachher aber auch nicht unbedingt. Ein paar Kenntnisse wird man haben, aber XML parsen... wir haben das gemacht, aber ich habe es bereut, das gehört einfach nicht da rein, dafür ist es zu speziell. UI bauen auch, weil das von der Bibliothek abhängt.

    Naja, also Informatiker bekommt man Programmieren doch beigebracht.
    Und ich kann mir nicht vorstellen, dass man in anderen Studiengängen nicht zumindestens Einführungskurse bekommt.

    Das man sich nicht in der Vorlesung hinsetzt und irgendwelche Xml-Parser/Gui-Frameworks erklärt ist klar, aber zumindestens ausreichende Informationen, mit was gearbeitet werden soll und wo man Erklärungen dazu findet, sollte sein.



  • Also ich habe schon aus vielen Ecken gehört, dass man in Informatik sehr viel Mathe und theoretische Informatik durchnimmt, programmieren jedoch kaum lernt. Hm, aber vielleicht waren das auch nur die ersten paar Semester und im 5./6. lernt man das wiederum, denn solche Geschichten hörte ich auch.

    Ich musste jedenfalls XML im 6. Semester durchkauen und da haben wir echt einige Vorlesungsstunden das Format besprochen -.- das war so was von unnötig. Gut, war auch Wirtschaftsinformatik-Studium, dort lernt man wirklich nicht sehr häufig programmieren. Zumindest nicht gut.

    Aber egal, ich schweife ab.

    Inditronic:
    So ein rauer Ton ist hier nicht selten. Nimm das nicht persönlich, es meint keiner böse. Und wenn, ist das zu ignorieren. 🙂


Log in to reply