1

私は数ヶ月間プロジェクトに取り組んでいますが、現在私が抱えている主な問題はxmlファイルへの追加です。問題なくファイルを作成できます。しかし、私はもっとデータを追加できるようにしたいと思っています。基本的には小さなデータベースのように使用します。

含まれているコードはプログラム全体のごく一部にすぎませんが、ここにあると思います。ファイルに追加するプロセスを理解するのに助けが必要です。各要素は問題なくユーザー入力を受け取ります。しかし、彼らが2つ目の馬を書きに行くとき、彼のファイルは古いものを一掃し、まったく新しいファイルを作成します。

追加する方法についての提案は素晴らしいでしょう

void WriteThisHorseToFile(char* horseName, char* horseMother, char* horseFather, char* horseHeight, 
                      char* horseOwner, char* horseAge, char* horseWins, char* horseMarkings, char* horseNotes)  
{  

TiXmlDocument doc;
TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );  
doc.LinkEndChild( decl );  

TiXmlElement * root = new TiXmlElement( "Horses" );  
doc.LinkEndChild( root );

TiXmlElement * element2 = new TiXmlElement( "Name" );  
root->LinkEndChild( element2 );  

TiXmlText * text2 = new TiXmlText(horseName);  
element2->LinkEndChild( text2 );  

TiXmlElement * element3 = new TiXmlElement( "Mother" );  
element2->LinkEndChild( element3 );  

TiXmlText * text3 = new TiXmlText(horseMother);  
element2->LinkEndChild( text3 );  

TiXmlElement * element4 = new TiXmlElement( "Father" );  
element2->LinkEndChild( element4 );  

TiXmlText * text4 = new TiXmlText(horseFather);  
element2->LinkEndChild( text4 );  

TiXmlElement * element5 = new TiXmlElement( "Height" );  
element2->LinkEndChild( element5 );  

TiXmlText * text5 = new TiXmlText(horseHeight);  
element2->LinkEndChild( text5 ); 

TiXmlElement * element6 = new TiXmlElement( "Owner" );  
element2->LinkEndChild( element6 );  

TiXmlText * text6 = new TiXmlText(horseOwner);  
element2->LinkEndChild( text6 );

TiXmlElement * element7 = new TiXmlElement( "Age" );  
element2->LinkEndChild( element7 );  

TiXmlText * text7 = new TiXmlText(horseAge);  
element2->LinkEndChild( text7 );

TiXmlElement * element8 = new TiXmlElement( "Wins" );  
element2->LinkEndChild( element8 );  

TiXmlText * text8 = new TiXmlText(horseWins);  
element2->LinkEndChild( text8 );

TiXmlElement * element9 = new TiXmlElement( "Markings" );  
element2->LinkEndChild( element9 );  

TiXmlText * text9 = new TiXmlText(horseMarkings);  
element2->LinkEndChild( text9 );

TiXmlElement * element10 = new TiXmlElement( "Notes" );  
element2->LinkEndChild( element10 );  

TiXmlText * text10 = new TiXmlText(horseNotes);  
element2->LinkEndChild( text10 );

dump_to_stdout( &doc );
doc.SaveFile("demo2.xml"); 

PressEnter();
}
4

1 に答える 1

3

初めて投稿して、サイトのレイアウトに慣れてすみません。

xmlファイルの追加の問題をどのように解決したか。非常に簡単でした。上記の例を使用します。

これは最もクリーンなコードではありませんが、例は引き続き適用されます。これで動作しているので、コードを少し整理することができます。

これが他の人にそれがどのように行われるかを理解するのに役立つことを願っています。

void WriteThisHorseToFile(char* horseName, char* horseMother, char* horseFather, char* horseHeight, 
                  char* horseOwner, char* horseAge, char* horseWins, char* horseMarkings, char* horseNotes)  

TiXmlDocument doc;
doc.LoadFile ("horses.xml");


TiXmlElement* root = doc.FirstChildElement( "Horses" );
if ( root )
{

TiXmlElement * element2 = new TiXmlElement( "Name" );  
root->LinkEndChild( element2 );  

TiXmlText * text2 = new TiXmlText(horseName);  
element2->LinkEndChild( text2 );  

//add as many child links as you wish :D

}

else 

{  

TiXmlDocument doc;
TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );  
doc.LinkEndChild( decl );  

TiXmlElement * root = new TiXmlElement( "Horses" );  
doc.LinkEndChild( root );

TiXmlElement * element2 = new TiXmlElement( "Name" );  
root->LinkEndChild( element2 );  

TiXmlText * text2 = new TiXmlText(horseName);  
element2->LinkEndChild( text2 ); 

//add as many child links as you wish :D 

}
于 2011-11-11T12:02:13.540 に答える