TinyXML2 and C++



  • Hi,

    Ich benutze TinyXML2 um den Inhalt eines wxGrids in eine XML Datei zu schreiben.

    Das wxGrd sieht folgendermaßen aus:

    Jahr | Monat
    ---- |-------------
    2012 | 03
    2009 | 08

    Wie die XML aussehen sollte:

    <SQL>
    <Datensatz>
    <Jahr>2012</Jahr>
    <Monat>03</Monat>
    </Datensatz>
    <Datensatz>
    <Jahr>2009</Jahr>
    <Monat>08</Monat>
    </Datensatz>
    </SQL>

    Aber leider bekomme ich nur eine XML zustande, die die Jahre und Monate "zusammenfügt".
    Wie sie aussieht:

    <SQL>
    <Datensatz>
    <Jahr>20122009</Jahr>
    <Monat>0308</Monat>
    </Datensatz>
    <Datensatz>
    <Jahr>20122009</Jahr>
    <Monat>0308</Monat>
    </Datensatz>
    </SQL>

    Mein Code:

    XMLDocument doc;
        XMLElement* xesql = doc.NewElement("SQL");
        XMLNode * xnsql = doc.InsertFirstChild(xesql);
        XMLElement* xejahr = doc.NewElement("Jahr");
        XMLElement* xemonat = doc.NewElement("Monat");
        XMLText* datensatzJahr = doc.NewText("");
        XMLText* datensatzMonat = doc.NewText("");
        for(int i=0; i<=1; i++)
        {
            XMLElement* xedatensatz = doc.NewElement("Datensatz");
            datensatzJahr = doc.NewText(m_gd_data->GetCellValue(i,0));
            datensatzMonat = doc.NewText(m_gd_data->GetCellValue(i,1));
            xejahr->InsertEndChild(datensatzJahr);
            xemonat->InsertEndChild(datensatzMonat);
            xedatensatz->InsertEndChild(xejahr);
            xedatensatz->InsertEndChild(xemonat);
            xesql->InsertEndChild(xedatensatz);
        }
        doc.SaveFile(path);
    

    Ich weiß wirklich nicht, wo das Problem ist. Kann jemand helfen?

    Liebe Grüße,
    NeuerUser



  • Problem gelöst. Für Andere mit ähnlichem Problem - so müsste es aussehen:

    for(int i=0; i<=1; i++)
        {
            XMLElement* xedatensatz = doc.NewElement("Datensatz");
            XMLElement* xejahr = doc.NewElement("Jahr");
            XMLElement* xemonat = doc.NewElement("Monat");
            datensatzJahr = doc.NewText(m_gd_data->GetCellValue(i,0));
            datensatzMonat = doc.NewText(m_gd_data->GetCellValue(i,1));
            xejahr->InsertEndChild(datensatzJahr);
            xemonat->InsertEndChild(datensatzMonat);
            xedatensatz->InsertEndChild(xejahr);
            xedatensatz->InsertEndChild(xemonat);
            xesql->InsertEndChild(xedatensatz);
         }
    

Anmelden zum Antworten