RAD Studio XE7에서는 새로운 XML DOM(Document Object Model)인 OmniXML이 추가되어 현재 총 3가지의 XML DOM을 사용할 수 있습니다.
- MSXML
- ADOM
- OmniXML
XML DOM은 문자열로된 XML 데이터를 분석해 프로그래밍에서 사용할 수 있도록 구조화하는 역할을 합니다.
각 XML DOM을 비교하면 아래와 같습니다.(docwiki.embarcadero.com 참고)
구현 | 단위 | 전역 변수 값 | 설명 |
---|---|---|---|
| Windows 전용, RAD Studio의 내장 XML 공급 업체 중 가장 빠름. 크로스 플랫폼에서 XML DOM 벤더를 선택하지 않으면 실행 시 런타임오류 발생. | ||
|
| 크로스 플랫폼. ADOM보다 훨씬 빠르지 만 MSXML보다 약간 느림. | |
|
| 크로스 플랫폼. RAD Studio의 다른 임베디드 XML 벤더보다 느림. |
결과적으로로 보면 윈도우 환경의 VCL 프로젝트에서는 MSXML을 크로스플랫폼용 FMX 프로젝트에서는 OmniXML으로 설정하는 것이 유리합니다.
XML DOM을 설정하는 방법은 TXMLDocument.DomVender를 설정하는 방법과 DefaultDOMVender로 프로젝트 전반적으로 설정하는 방법 두가지가 있습니다.
❑ TXMLDocument.DOMVender 설정
TXMLDocument 컴포넌트의 DOMVender 속성을 설정해 해당 XML DOM 벤더의 기술을 사용합니다.
❑ DefaultDOMVender로 프로젝트 전반적으로 설정
program Project1; uses System.StartUpCopy, FMX.Forms, Unit1 in 'Unit1.pas' {Form1}, Xml.xmldom, XML.OmniXMLDom; {$R *.res} begin DefaultDOMVendor := sOmniXmlVendor; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
Xml.xmldom 유닛을 추가하고, DefaultDOMVender에 DOM Vender 전역변수를 설정하면 이후 사용되는 컴포넌트의 DOMVender가 모두 전역으로 설정한 DOMVender로 설정됩니다.
❑ 결론
- 윈도우 VCL 프로젝트는 MSXML을 선택, 멀티(크로스)플랫폼 FMX 프로젝트에서는 OmniXML을 선택하는 것이 유리
- XML DOM 벤더 선택은 컴포넌트 속성을 이용하거나, DefaultDOMVender 전역변수로 프로젝트 전반에 설정 가능
- 활용) XML 분석하는 소스코드를 VCL/FMX에서 재사용할 경우 프로젝트 소스에서 설정하면 플랫폼 별 최적의 성능으로 구현 가능
참고자료
- http://docwiki.embarcadero.com/RADStudio/XE7/en/Using_the_Document_Object_Model
- http://delphiaball.co.uk/2014/12/29/setting-default-xml-dom-delphi-xe7/