2011-11-07 4 views
1

저는 몇 달 동안 프로젝트를 진행해 왔습니다. 지금 당장 가지고있는 주요 문제는 xml 파일에 추가되는 것입니다. 나는 문제없이 파일을 만들 수있다. 하지만 더 많은 데이터를 추가 할 수 있기를 원합니다. 기본적으로 작은 데이터베이스처럼 사용하십시오.TinyXml이 xml 파일에 추가됩니다.

포함 된 코드는 전체 프로그램의 일부에 지나지 않지만 여기에 파일에 추가 할 프로세스를 파악하는 데 도움이 필요하다고 생각합니다. 각 요소는 아무런 문제없이 사용자 입력을받습니다. 그러나 그들이 두 번째 Horse tot을 쓸 때 그는 파일을 지우고 완전히 새로운 파일을 만듭니다. 추가하는 방법에 대한

어떤 제안은 큰

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

이렇게 할 수있는 방법을 제안 할 수있는 사람이 아무도 없습니까? – yrthilian

+0

이 문제를 직접 해결했습니다. – yrthilian

답변

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 

}