2

wxGrid からデータを読み取り、XML ファイルに書き込みたいと考えています。wxGrid は次のようなものです。

ヤール | モナト
------ |-------------
2012 | 2009年03
月 | 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 に答える