Wie kann ich in C eine XML Struktur nach Tags auslesen?

...komplette Frage anzeigen

3 Antworten

Habe ich das richtig verstanden, dass du am Ende eine Auflistung aller im XML-File verwendeten Tags erreichen möchtest? Warum liest du das File nicht als stream ein, und überprüfst nach dem "<" Zeichen. Sobald dieses Vorliegt, schreibst du alles was bis zum Auftritt des ">" zeichens vorkommt in eine String-Variable (oder ein String-Array) das "/" zeichen beim schließen eines Tags würde ich ignorieren lassen, und gleichzeitig beim ablegen einer Variable überprüfen ob der string schon vorkam. falls ja verwerfen, falls nein speichern. Am Ende des Programms gibst du alle Strings / Arrayeinträge aus, und hast somit eine Auflistung aller vorhandener Tags.

Als IDE für C benutzte ich Code::Blocks (http://www.codeblocks.org/)

Milane 14.09.2015, 12:28

int main(int argv, char *argc[]){

FILE *fp;int i, temp;

fp = fopen("test.xml", "r");

if(fp == NULL) {

      printf("Datei konnte nicht geoeffnet werden.\n");

}else {// komplette Datei zeichenweise ausgeben

while((temp = fgetc(fp))!=EOF) {

       printf("%c ", temp);}fclose(fp);}

       printf("\n");
}


Also damit liest der das ja alles einfach ein. Wäre das nicht andersrum? Dass ich zuerst ">" suchen muss und bis "<" ausgeben muss?  Nur weiß ich nicht wo ich das genau einbauen muss.. In der While Schleife wäre es sinnvoll aber ich habe ja 2 Sachen... Einmal den Anfang und dann das Ende? und da brauch ich ja nochmal eine schleife dass der das immer wieder macht bis alles ausgelesen ist? 
Hilfe :( 

0

Ich würde mir das auch einfach kurzerhand selbst schreiben. 

#include <stdio.h>

Da du weißt dass jeder Befehl mit <BEFEHL> anfängt und </BEFEHL> endet kannst du sowohl nach den Schlüsselwörtern als auch nach dem Inhalt durchsuchen. 

fopen()   // öffnet eine Datei
scanf()   // liest sie ein
fclose()  // schließt sie wieder

Ich würde struct Elemente für jeden Befehl erstellen und dann nur prüfen um welchen es sich handelt.

Bujin 24.08.2015, 10:42

Grade wenn du noch am Anfang stehst würde ich dir von jeder Art von IDE abraten. Die übernehmen Aufgaben die das Arbeiten erleichtern und wenn man Geld damit verdient ist das auch gut so. Willst du aber lernen gut zu programmieren solltest du nichts der Software überlassen. Es ist etwas schwieriger aber es lohnt sich. 

Einfach nen guter Texteditor wie zB. Notepad++, Sublime oder EMacs reichen vollkommen. 

Arbeitest du unter Windows würde ich dir noch zu einer virtuellen Maschine mit Linux raten. Mit Linux fällt es wesentlich leichter ohne IDE zu programmieren und es ist kostenlos. Windows ist in der Hinsicht eher eine Qual. 

0
Bujin 24.08.2015, 10:57

Als Beispiel:

Viele denken immer C und C++ Code muss aus vielen einzelnen Dateien bestehen weil man es halt so lernt. Das stimmt so nicht! Das dient nur der Übersichtlichkeit und vorm Kompilieren werden alle Dateien zu einer zusammengefügt. 

Programmierst du ohne eine IDE musst du selbst dafür sorgen dass dein Code übersichtlich ist. Das heißt du schreibst dir ein einfaches Script welches alle deine einzelnen Code-Dateien richtig zusammenkopiert und kompiliert.

Oder du schreibst alles in eine einzige Datei :D Du wirst schnell merken dass das auf Dauer zu kompliziert wird. 

0

Was möchtest Du wissen?