Programming
XML Serialize
콜러스 XXII
2008. 8. 7. 11:03
간혹 C++로 프로그램 만들다 보면 C#의 XML Serialize가 아주 그리워 질때가 있다.
인터넷에는 많은 방법들이 있었는데 나는 Xerces(XML 종합 라이브러리)와 XSD serializer
(Serialize를 위한 XSD Compiler)를 이용해서 Serialize를 한다.
이 조함으로는 Class 베이스의 소스가 나온다. Struct 베이스의 소스 출력이 아니다.
[다음의 Step은 Window 환경하에서 VS2008을 이용한 방법이다. 또한 개인적으로
Install 버젼은 선호하지 않으므로 소스를 받아 사용했다.]
1. 최종 버젼을 얻는다.
Xerces : http://xerces.apache.org/xerces-c/download.cgi
(소스를 받도록 한다. 2008/08/07 기준으로 버젼은 2.8.0이다.)
XSD Serializer : http://www.codesynthesis.com/products/
(xsd-3.1.0-i686-windows.zip을 받도록 한다.)
2. 적당한 폴더에 각각을 위치 시킨다.
예) C:\Project
라고 가정한다.
3. Xerces를 Compile한다.
C:\Project\xerces-c-src_2_8_0\Projects\Win32\VC8\xerces-all
에 보면 Solution화일이 있는데 그것을 Load 해서 Compile 한다.
그러면 최종 DLL과 LIB는
C:\Project\xerces-c-src_2_8_0\Build\Win32\VC8\Debug
에 생긴다. (Debug Compile기준.)
4. VS2008을 연다.
Tools -> Option
을 선택한다.
5. Projects and Solution -> VC++ Directories
를 선택한다.
6. Show Directories for 에서 Include files를 선택한다.
C:\Projects\xerces-c-src_2_8_0\src
C:\Projects\xsd-3.1.0-i686-windows\libxsd
를 맨위에 추가 한다.
7. Show Directories for 에서 Library files를 선택한다.
C:\Projects\xerces-c-src_2_8_0\Build\Win32\VC8\Debug
를 맨위에 추가 한다. (아까 디버그로 Compile했었다. Release 버젼은 또다른
Folder가 생길 것이다.)
8. Show Directories for 에서 Executable files를 선택한다.
C:\Projects\xsd-3.1.0-i686-windows\bin
를 맨위에 추가 한다.
9. C:\Project\xerces-c-src_2_8_0\Build\Win32\VC8\Debug에 있는 DLL을 해당
Project에 가져다 둔다.
10. 준비 끝이다. 예제를 Compile한 뒤 잘되는지 확인 한다.
11. 환경변수 Path에 C:\Projects\XML\xsd-3.1.0-i686-windows\bin를 추가해 둔다.
------------ 실제 사용시 주의 ---------------------
* XSD 화일 생성할때마다 다음 단계를 거쳐야 한다.
[DLL 프로젝트 내에서 만들 경우]
1. XSD 화일을 하나 만든다.
2. 화일을 오른쪽 클릭하여 Properties를 선택한다.
3. Custom Build Step -> General을 선택한다.
4. Command Line 항목이 있는데 그기에
xsd.exe cxx-tree --generate-serialization
라고 입력 해야 한다.
* VS2008에서는 XSD 자체를 DB와 연계되어 이용 하더라... ㅠ.ㅠ 제길~
(선택하는게 귀찮은데... Rule을 이용해야 한다.)
2. 도스 창을 열어 해당 화일이 있는 Folder로 간뒤
xsd.exe cxx-tree --generate-serialization
를 직접 입력하여 실행한다.
3. Project에 생성된 File을 추가한다.
노파심에서 하는 말이지만 생성된 XML은 XSD와 같이 배포 되어야 한다.
XSD Serializer를 이용하기 위한 문서는
http://www.codesynthesis.com/products/xsd/c++/tree
에 있다.
VS Compiler Rule을 이용하는 방법이 있는데
http://wiki.codesynthesis.com/Using_XSD_with_Microsoft_Visual_Studio
에 설명 되어 있다.
데이타 바인딩에 유용할듯...
[2009/03/22 업데이트] 흨.... C# 3.5가 나오면서 XML-LINQ가 등장해서 더 쉽게 XML을 조작할수 있게 되었다. 넘 편한건 좋은데 랭기지 버젼업좀 그만하면 안될까 MS !!