TinyXml добавить в файл XML

Я работаю над проектом уже несколько месяцев, и моя главная проблема, с которой я столкнулся сейчас, - добавление в XML-файл. Я могу создать файлы без проблем. Но я хочу иметь возможность добавить больше данных. В основном используйте его как небольшую базу данных.

Включенный код является лишь небольшой частью всей программы, но я считаю, что именно здесь мне нужна помощь, чтобы выяснить процесс добавления файла. Каждый элемент принимает пользовательский ввод без каких-либо проблем. но когда они идут, чтобы написать вторую лошадь, он уничтожает старый и создает новый файл.

Любые предложения о том, как добавить, было бы здорово

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

1 ответ

Решение

Извините, что впервые публикую и просто привыкла к верстке сайта.

Как я решил проблему с добавлением для 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 

}
Другие вопросы по тегам