다운로드 사이트 : http://www.firstobject.com
참고로 첨부파일은 11.5 버전입니다. (2013년 07월 15일 기준 최신버전)
XML 데이터를 쓰고 읽기 위해서 인터넷을 검색하던 중 STL 만을 사용하여 가볍게 구현된 CMarkup 이라는 Open Source 를 찾았습니다.
컴파일 할때 만약 Error 가 난다면 전처리기에 MARKUP_STL을 정의해 주시면 됩니다. 프로젝트의 속성 페이지에 설정하여 전역적으로 적용되도록 되어야 합니다.
먼저 XML File 작성 예제입니다.
CMarkup xml;
xml.AddElem(_T("SETTING")); // 현재 수준에서 원소를 추가합니다.
xml.AddChildElem(_T("SIZE")); // 현재 수준에서 원소를 차일드로 추가합니다.
xml.IntoElem(); // 한단계 안으로 들어갑니다.
xml.AddAttrib(_T("X"),_T("20")); // 현재 Element에 Attribute 를 추가합니다.
xml.AddAttrib(_T("Y"),_T("20")); //IntoElem 후 AddAttrib 는 AddChildAttrib 와 똑같은 효과를 냅니다.
xml.OutOfElem(); // 현재 수준에서 나옵니다.
xml.IntoElem();
xml.AddAttrib(_T("Count"),_T("3"));
xml.AddChildElem(_T("Data"),_T("4")); // IntoElem 후 AddElem 와 똑같은 효과를 냅니다.
xml.AddChildElem(_T("Data"),_T("7"));
xml.AddChildElem(_T("Data"),_T("2"));
xml.OutOfElem();
wstring csXML = xml.GetDoc();
wcout << csXML <<endl;
xml.Save(_T("TestXml.XML"));
}
만들어진 XML 파일입니다.
</SETTING>
<X>
<COL Count="3">
<Data>4</Data>
<Data>7</Data>
<Data>2</Data>
</COL>
</X>
다음은 XML Load 예제 입니다.
CMarkup xml;
wstring FileName(_T("TestXml.XML"));
wcout << "Load XML File : " << FileName << " : ";
if (xml.Load(FileName) == true)
{
cout << "Fail" << endl;
return;
}
else
{
cout << "Success" << endl;
}
bool b1 = xml.FindElem(_T("SETTING")); //Element 를 찾습니다.
bool b2 = xml.IntoElem();
bool b3 = xml.FindElem(_T("SIZE"));
wstring SizeX = xml.GetAttrib(_T("X")); // 현재 Element에서 Attribute 의 값을 가져옵니다.
wstring SizeY = xml.GetAttrib(_T("Y"));
wcout << "Setting -> Size -> X : "<< SizeX << " , Y : " << SizeY << endl;
bool b4 = xml.OutOfElem();
bool b5 = xml.FindElem(_T("X"));
bool b6 = xml.IntoElem();
bool b7 = xml.FindElem(_T("COL"));
int CountX = _wtoi(xml.GetAttrib(_T("Count")).c_str());
wstring aaa = xml.GetAttrib(_T("Count"));
wcout << "COL Count = " << CountX << endl;
bool b8 = xml.IntoElem();
while(xml.FindElem(_T("Data")))
{
wcout << "Data : " << xml.GetData() << endl; // 현재 Element의 Data값을 가져옵니다.
}
bool b9 = xml.OutOfElem();
bool b10 = xml.OutOfElem();
}
참고로 첨부파일은 11.5 버전입니다. (2013년 07월 15일 기준 최신버전)
XML 데이터를 쓰고 읽기 위해서 인터넷을 검색하던 중 STL 만을 사용하여 가볍게 구현된 CMarkup 이라는 Open Source 를 찾았습니다.
컴파일 할때 만약 Error 가 난다면 전처리기에 MARKUP_STL을 정의해 주시면 됩니다. 프로젝트의 속성 페이지에 설정하여 전역적으로 적용되도록 되어야 합니다.
먼저 XML File 작성 예제입니다.
void CView_Test1::OnBnClickedBtnXmlMake()
{CMarkup xml;
xml.AddElem(_T("SETTING")); // 현재 수준에서 원소를 추가합니다.
xml.AddChildElem(_T("SIZE")); // 현재 수준에서 원소를 차일드로 추가합니다.
xml.IntoElem(); // 한단계 안으로 들어갑니다.
xml.AddAttrib(_T("X"),_T("20")); // 현재 Element에 Attribute 를 추가합니다.
xml.AddAttrib(_T("Y"),_T("20")); //IntoElem 후 AddAttrib 는 AddChildAttrib 와 똑같은 효과를 냅니다.
xml.OutOfElem(); // 현재 수준에서 나옵니다.
xml.AddElem(_T("X"));
xml.AddChildElem(_T("COL"));xml.IntoElem();
xml.AddAttrib(_T("Count"),_T("3"));
xml.AddChildElem(_T("Data"),_T("4")); // IntoElem 후 AddElem 와 똑같은 효과를 냅니다.
xml.AddChildElem(_T("Data"),_T("7"));
xml.AddChildElem(_T("Data"),_T("2"));
xml.OutOfElem();
wstring csXML = xml.GetDoc();
wcout << csXML <<endl;
xml.Save(_T("TestXml.XML"));
}
만들어진 XML 파일입니다.
<SETTING>
<SIZE X="20" Y="20"/></SETTING>
<X>
<COL Count="3">
<Data>4</Data>
<Data>7</Data>
<Data>2</Data>
</COL>
</X>
다음은 XML Load 예제 입니다.
void CView_Test1::OnBnClickedBtnXmlLoad()
{CMarkup xml;
wstring FileName(_T("TestXml.XML"));
wcout << "Load XML File : " << FileName << " : ";
if (xml.Load(FileName) == true)
{
cout << "Fail" << endl;
return;
}
else
{
cout << "Success" << endl;
}
bool b1 = xml.FindElem(_T("SETTING")); //Element 를 찾습니다.
bool b2 = xml.IntoElem();
bool b3 = xml.FindElem(_T("SIZE"));
wstring SizeX = xml.GetAttrib(_T("X")); // 현재 Element에서 Attribute 의 값을 가져옵니다.
wstring SizeY = xml.GetAttrib(_T("Y"));
wcout << "Setting -> Size -> X : "<< SizeX << " , Y : " << SizeY << endl;
bool b4 = xml.OutOfElem();
bool b5 = xml.FindElem(_T("X"));
bool b6 = xml.IntoElem();
bool b7 = xml.FindElem(_T("COL"));
int CountX = _wtoi(xml.GetAttrib(_T("Count")).c_str());
wstring aaa = xml.GetAttrib(_T("Count"));
wcout << "COL Count = " << CountX << endl;
bool b8 = xml.IntoElem();
while(xml.FindElem(_T("Data")))
{
wcout << "Data : " << xml.GetData() << endl; // 현재 Element의 Data값을 가져옵니다.
}
bool b9 = xml.OutOfElem();
bool b10 = xml.OutOfElem();
}
댓글 없음:
댓글 쓰기