TinyXML Write
TinyXML Read의 test.xml과 같은 포맷으로 XML 파일을 저장해 보자.
저장될 파일은 다음과 같다.
test_write.xml
<?xml version="1.0" encoding="euc-kr" ?> <root> <!--각국의 대표 음식들이다.--> <food num="1"> <name>김치</name> <country>대한민국</country> </food> </root> |
XML 형식 선언
TiXmlDocument doc; TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "euc-kr", "" ); doc.LinkEndChild( decl ); |
우리나라 문자셋의 1.0 버전이 만들어 진다.
서브 노드 추가
TiXmlElement * root = new TiXmlElement( "root" ); doc.LinkEndChild( root ); |
"root" 엘리먼트를 추가한다. TinyXML에서 노드를 추가 할 때, new로 생성한 엘리먼트는
내부에서 자동으로 삭제 되기 때문에 해제 할 필요가 없다.
주석 추가
TiXmlComment * comment = new TiXmlComment(); comment->SetValue( "각국의 대표 음식들이다." ); root->LinkEndChild( comment ); |
root의 자식으로 "food" 서브 노드 추가
TiXmlElement *food = new TiXmlElement( "food" ); root->LinkEndChild( food ); |
root의 자식이 되는 "food" 서브 노드를 추가한다.
food의 Attribute로 "num" 추가
food->SetAttribute("num", 1); //food->SetAttribute("num", "1")와 동일 |
food->SetAttribute( "num", "1" )도 동일한 결과이다.
food의 자식으로 name 서브 노드와 값 추가
TiXmlElement *name = new TiXmlElement( "name" ); food->LinkEndChild( name ); name->LinkEndChild( new TiXmlText( "김치" )); |
food의 자식 노드로 "name"을 추가하고 값은 "김치"이다.
food의 자식 노드로 country 서브 노드와 값 추가
TiXmlElement *country = new TiXmlElement( "country" ); food->LinkEndChild( country ); country->LinkEndChild( new TiXmlText( "대한민국" )); |
food의 자식 노드로 "country"를 추가하고 값은 "대한민국"이다.
저장 하기
doc.SaveFile("test_write.xml"); |
SaveFile()을 통해 원하는 파일명으로 값을 저장한다.
전체 소스
void WriteXml() { //형식 선언 TiXmlDocument doc; TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "euc-kr", "" ); doc.LinkEndChild( decl );
//서브 노드 추가 TiXmlElement * root = new TiXmlElement( "root" ); doc.LinkEndChild( root );
//주석 추가 TiXmlComment * comment = new TiXmlComment(); comment->SetValue( "각국의 대표 음식들이다." ); root->LinkEndChild( comment );
//root의 자식으로 food 서브 노드 추가 TiXmlElement *food = new TiXmlElement( "food" ); root->LinkEndChild( food );
//food의 Attribute로 "num" 추가 food->SetAttribute("num", 1); //food->SetAttribute("num", "1")와 동일
//food의 자식으로 name 서브 노드와 값 추가 TiXmlElement *name = new TiXmlElement( "name" ); food->LinkEndChild( name ); name->LinkEndChild( new TiXmlText( "김치" ));
//food의 자식으로 country 서브 노드와 값 추가 TiXmlElement *country = new TiXmlElement( "country" ); food->LinkEndChild( country ); country->LinkEndChild( new TiXmlText( "대한민국" ));
doc.SaveFile("test_write.xml"); } |
콘솔 창으로 XML 파일 보여주기
void PrintXml() { TiXmlDocument doc( "test.xml" ); doc.LoadFile();
//문자열로.. TiXmlPrinter printer; printer.SetStreamPrinting(); doc.Accept( &printer ); const char* pStr = printer.CStr(); // char* 를 반환한다. printf( pStr ); #ifdef TIXML_USE_STL const std::string str = printer.Str(); // std::string으로 반환한다. #endif } |
XML 파일을 콘솔 창으로 보여준다...
소스:
참조:
출처 : http://dolphin.ivyro.net/file/algorithm/etc/tinyXml_write.html
http://dolphin.ivyro.net/file/algorithm/etc/tinyXml_write.html
'Programming > TinyXML' 카테고리의 다른 글
TinyXml 사용법 요약 (0) | 2010.12.08 |
---|---|
TinyXML Read (2) | 2010.12.08 |
XML introduce(XML 문법 설명) (0) | 2010.04.27 |
Tiny XML 링크 (0) | 2010.04.27 |