Parsen mitExpat

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Parsen mitExpat

    Hallo,

    ich arbeite mich gerade im Umgang mit dem XML-Parser Expat ein. Das Parsen selbst geschieht mit dem Aufruf:
    XML_Parse(pars, buff, len, XML_TRUE)
    In XML_SetElementHandler(pa, st, ed) sind die Funktionen enthalten, mit deren Hilfe ich meine XML-Datei parsen kann. Dies mache ich wie folgt:


    Quellcode

    1. int d;
    2. void st(void *data, const char *ele, const char **att)
    3. {
    4. for (int i = 0; i < d; i++)
    5. cout<<" ";
    6. cout<<ele<<" ";
    7. for (int i = 0; attribut[i]; i += 2) {
    8. cout<<attribut[i]<<" ='"<<attribut[i+1]<<"' ";
    9. }
    10. cout<<"\n";
    11. d++;
    12. }
    Alles anzeigen



    Es werden mir also die Elemente und Attribute meiner XML-Datei ausgegeben.
    Nun würde ich diese aber gern abspeichern. Versucht habe ich es mit einem Array und mittels einer verketteten Liste. Jedoch ohne Erfolg, Es wurden leider immer alle Array-Elemente mit dem neuen Wert gefüllt.
    Nun wollte ich mich mal hier erkundigen, ob jemand eine Möglichkeit kennt, die jeweiligen Werte abzuspeichern? Bietet Expat hier eine Möglichkeit?
    Versucht habe ich es auch mit ofstream, jedoch wird die Textdatei immer wieder für jedes Element neu erstellt und überschreibt die alte Textdatei, die den Namen des vorherigen Elements beinhaltete. Ist ja logisch, da die Funktion st nicht lediglich einmal, sondern immer wieder aufgerufen wird. Nur mit dem Speichern der Elemente hat man dann Probleme.
  • Sarah schrieb:

    Versucht habe ich es auch mit ofstream, jedoch wird die Textdatei immer wieder für jedes Element neu erstellt und überschreibt die alte Textdatei, die den Namen des vorherigen Elements beinhaltete.


    Du hast den Parameter nicht (richtig?) gesetzt.

    Schau dir folgende Beitrag zu ofstream an:
    cplusplus.com/reference/fstream/ofstream/open/
    und da speziell den Abschnitt Parameter und Beispiel.

    MfG bcc-fan
  • Hallo bcc-fan,

    danke für deine schnelle Antwort. Ja, ich habe geschrieben:

    Quellcode

    1. ofstream file("ele.txt", ios::out);
    2. file.write(element, sizeof(element));


    Stattdessen müsste es ofstream file("ele.txt", ios::app) sein. Das war sehr dumm meinerseits.

    Vielen Dank dir!