2

我想从 wxGrid 读取数据并将其写入 XML 文件。wxGrid 是这样的:

贾尔 | 莫纳特
------ |-------------
2012 | 03
2009 | 08


我想拥有的:

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


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

4

2 回答 2

4

您不会为循环的每次迭代重置 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);
于 2012-06-05T08:31:59.803 回答
1

您必须在循环中为年份和月份创建新元素。

于 2012-06-05T08:24:50.223 回答