본문 바로가기

Delphi/C++Builder

[XE7] XML DOM 벤더(MSXML, ADOM, OmniXML) 설정하기

RAD Studio XE7에서는 새로운 XML DOM(Document Object Model)인 OmniXML이 추가되어 현재 총 3가지의 XML DOM을 사용할 수 있습니다.

  • MSXML
  • ADOM
  • OmniXML
XML DOM은 문자열로된 XML 데이터를 분석해 프로그래밍에서 사용할 수 있도록 구조화하는 역할을 합니다.
각 XML DOM을 비교하면 아래와 같습니다.(docwiki.embarcadero.com 참고)
구현단위전역 변수 값설명

MSXML

Xml.Win.msxmldom

SMSXML

Windows 전용, RAD Studio의 내장 XML 공급 업체 중 가장 빠름.

크로스 플랫폼에서 XML DOM 벤더를 선택하지 않으면 실행 시 런타임오류 발생.

OmniXML

Xml.omnixmldom

sOmniXmlVendor

크로스 플랫폼. ADOM보다 훨씬 빠르지 만 MSXML보다 약간 느림.

ADOM

Xml.adomxmldom

sAdom4XmlVendor

크로스 플랫폼. 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에서 재사용할 경우 프로젝트 소스에서 설정하면 플랫폼 별 최적의 성능으로 구현 가능

참고자료