我想从wxGrid读取数据并将其写入XML文件。
wxGrid就像:



我想要的是:

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

我得到了:
<SQL>
    <Datensatz>
        <Jahr>20122009</Jahr>
        <Monat>0308</Monat>
    </Datensatz>
    <Datensatz>
        <Jahr>20122009</Jahr>
        <Monat>0308</Monat>
    </Datensatz>
</SQL>

我的代码:
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);

我真的不知道问题出在哪里。有人可以帮忙吗?

最佳答案

您无需为循环的每次迭代重置XML元素,因此仅将文本追加到现有元素。这应该工作:

XMLDocument doc;
XMLElement* xesql = doc.NewElement("SQL");
XMLNode * xnsql = doc.InsertFirstChild(xesql);
for(int i=0; i<=1; i++)
{
    XMLElement* xejahr = doc.NewElement("Jahr");
    XMLElement* xemonat = doc.NewElement("Monat");
    XMLText* datensatzJahr = doc.NewText("");
    XMLText* datensatzMonat = doc.NewText("");

    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);

关于c++ - TinyXML2和C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10893889/

10-09 18:54