Visual C++ 2008 Express - Lesen von XML-Dateien [Gelöst]
-
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-KonsolenanwendungWenn 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-KonsolenanwendungWenn 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-ParserDanke 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/
-
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.