Visual C++ 2008 Express - Lesen von XML-Dateien [Gelöst]



  • **Okay, ich hab das Programm hingekriegt. Danke für Eure Hilfe.
    Falls es jmd. gibt, der damit Probleme hat, kann mich gerne anschreiben.

    Gruß**

    Hallo Leute,
    ich arbeite schon seit vier Monaten mit Visual C++ und hatte bisher nie Probleme mit C++. Mein Lehrer hat vor einigen Tagen allen Schülern denselben Arbeitsauftrag aufgegeben. Wir sollen eine XML-Datei mit C++ auslesen, die Informationen verarbeiten (Auswertung der Information) und sie schließlich in Excel ausgeben.
    Unser Lehrer verlangt oft schwere Anforderungen und meist konnte ich sie mit meinen Mitschülern lösen, aber das aktuelle Problem krieg ich einfach nicht hin. Denn ich weiß einfach nicht wie ich eine XML lesen soll. Ich weiß nur wie das Auslesen einer Textdatei funktioniert, aber ich nehme mal an, dass es mit XML-Dateien nicht klappt. Habe das Problem natürlich gegoogelt. Anscheinend benötige ich Hilfprogramme wie "Xerces". Geht es auch ohne oder muss das sein?
    Selbstverständlich verlange ich nicht, dass ihr mir meine Hausaufgaben macht, aber eine Hilfestellung wäre echt gut. 🙂

    Weitere Informationen:
    Projekttyp ist Win32, Vorlage ist Win32-Konsolenanwendung
    Und im Assistenten klicken wir noch bei den zusätzlichen Optionen auf "Leeres Projekt".

    Währenddessen versuche ich weiter im Web durchzustöbern; vielleicht krieg es allein hin (falls es geklappt habt, lasse ich Euch rechtzeitig wissen). Lasst Euch ruhig Zeit; muss erst in zwei Wochen fertig sein.

    Danke!

    Gruß 🙄



  • Hallo,

    nimmst dus an, oder hast dus schon mit dem Auslesen probiert?
    Ich denke nämlich nicht, dass das ein Problem ist. Als Text einlesen und dann mussts noch für dich auswerten.

    Grüße



  • Boolshit schrieb:

    Hallo,

    nimmst dus an, oder hast dus schon mit dem Auslesen probiert?
    Ich denke nämlich nicht, dass das ein Problem ist. Als Text einlesen und dann mussts noch für dich auswerten.

    Grüße

    Bei meinem Freund hat es nicht geklappt. Vielleicht liegt es daran, dass er nicht so gut mit C++ ist. Ich werd es mal morgen selbst versuchen. Bin grad an einem anderen Rechner, wo ich nicht die Programme habe.



  • sen83 schrieb:

    Habe das Problem natürlich gegoogelt.
    ...
    Projekttyp ist Win32, Vorlage ist Win32-Konsolenanwendung

    Wenn man "richtig googeln würde fände man doch z.B. sowas ...

    CXMLFile - A Simple C++ XML Parser
    http://www.codeproject.com/Articles/24492/CXMLFile-A-Simple-C-XML-Parser



  • merano schrieb:

    sen83 schrieb:

    Habe das Problem natürlich gegoogelt.
    ...
    Projekttyp ist Win32, Vorlage ist Win32-Konsolenanwendung

    Wenn man "richtig googeln würde fände man doch z.B. sowas ...

    CXMLFile - A Simple C++ XML Parser
    http://www.codeproject.com/Articles/24492/CXMLFile-A-Simple-C-XML-Parser

    Danke für Deine Antwort, aber ich habe schon richtig gegoogelt. Wenn du meinen Beitrag nochmal durchliest, findest du das: "Anscheinend benötige ich Hilfprogramme wie "Xerces". Geht es auch ohne oder muss das sein?"



  • Eine XML-Datei ist auch nur eine Textdatei. Wenn du Textdateien lesen kannst, kannst du auch XML lesen. Die Herausforderung ist allerdings den Inhalt des XML-Files korrekt zu lesen. Da das nicht ganz trivial ist, wenn man den gesamten XML-Standard unterstützen will, gibt es eben fertige Parser, die dir hier zumindest die Syntax abnehmen. Was du mit den enthaltenen Daten machst ist dann wieder deine Aufgabe.

    Ein sehr guter (aber auch umfangreicher) ist z.B. Expat http://expat.sourceforge.net/


  • Mod

    XMLLite gibt es auch nicht.



  • Xml-Dateien einlesen, nach Excel ausgeben - ich würde sagen, natives C++ ist dafür unter Windows nicht gerade das beste Mittel der Wahl.

    Die erforderlichen Bibliotheken sind zwar da, aber nur mit COM anzusprechen. Mit C++/CLI statt nativem C++ könntest du aber das .NET Framework dafür bemühen - was die Sache erheblich einfacher macht. Steht dir dieser Weg zur Verfügung, oder muss es unbedingt "natives" C++ sein?



  • Edit: Ich habe es geschafft die XML-Datei zu lesen. Mein Fehler lag einfach darin, dass ich versucht habe eine Datei auf dem Desktop zu lesen, obwohl mein Programm nur Dateien in einem bestimmten Order überprüft. Deshalb konnte es meine XML-Datei nicht finden. Jetzt muss ich versuchen die darin enthaltenen Informationen zu verarbeiten. Wahrscheinlich brauche ich weiterhin Unterstützung. 🙂

    Doc Brown schrieb:

    Xml-Dateien einlesen, nach Excel ausgeben - ich würde sagen, natives C++ ist dafür unter Windows nicht gerade das beste Mittel der Wahl.

    Die erforderlichen Bibliotheken sind zwar da, aber nur mit COM anzusprechen. Mit C++/CLI statt nativem C++ könntest du aber das .NET Framework dafür bemühen - was die Sache erheblich einfacher macht. Steht dir dieser Weg zur Verfügung, oder muss es unbedingt "natives" C++ sein?

    Das weiß ich leider nicht. Mein Lehrer ist für seine Wochen im Ausland und daher nicht erreichbar. Aber ich nehme an, dass wir jede Möglichkeit benutzen dürfen um das Programm zum Laufen zu kriegen.

    Source2702 schrieb:

    Eine XML-Datei ist auch nur eine Textdatei. Wenn du Textdateien lesen kannst, kannst du auch XML lesen. Die Herausforderung ist allerdings den Inhalt des XML-Files korrekt zu lesen. Da das nicht ganz trivial ist, wenn man den gesamten XML-Standard unterstützen will, gibt es eben fertige Parser, die dir hier zumindest die Syntax abnehmen. Was du mit den enthaltenen Daten machst ist dann wieder deine Aufgabe.

    Ein sehr guter (aber auch umfangreicher) ist z.B. Expat http://expat.sourceforge.net/

    Ich habe es versucht wie eine Textdatei zu lesen, aber es klappt nicht (habs ohne den fertigen Parser gemacht).

    Gruß und vielen Dank für Eure Hilfe. Ich weiß es zu schätzen



  • Na, wenn's denn auch C++/CLI sein darf, lies dir einfach das Tutorial hier durch:

    http://www.functionx.com/vccli/xml/Lesson01.htm

    Da steht alles drin, was du benötigst.



  • Okay, ich hab den Beitrag noch mal verändert, weil ich den alten Fehler gefunden habe. Aber brauch noch Hilfe mit einem weiteren Problem.

    f.open(Dateiname.c_str(),ios::in);
    if (!f)
    cout << "Datei " << Dateiname << "konnte nicht geoeffnet werden" << endl;
    else
    {
    	do
    	{
    	getline(f,s);
    	if(s=="<Klasse>")
    		cout << "Test";
    

    Wie Ihr sehen könnt, öffne ich eine (XML)-Datei. Mit getline(f,s) hole ich mir die einzelnen Zeilen, richtig? Wieso geht es nicht, wenn ich eine if-Anweisung mache. Oder geht es bei XML-Dateien nicht, weil sie diese Sonderzeichen (<, >) besitzen? Ich nehme stark an, dass es irgendwas mit getline zu tun hat.



  • Mit den Sonderzeichen hat das mal nichts zu tun. Hast du schon debugged? Was steht in s drin nach getline()?
    Ich wiederholen mich aber nochmal: mit selber parsen wirst du auf lange Sicht nicht glücklich. Funktioniert möglicherweise mit einem einfachen XML-Aufbau, aber sobald gleiche Tags auch noch verschachtelt vorkommen, du Parameter, Werte und Platzhalter für Sonderzeichen > ü usw. auch berücksichtigen musst, wird es kompliziert.


Anmelden zum Antworten