TXMLDocument類:Delphi7的XML利器

字號(hào):

Delphi7 支持對(duì)XML文檔的操作,可以通過(guò)TXMLDocument類來(lái)實(shí)現(xiàn)對(duì)XML文檔的讀寫??梢岳肨XMLDocument把XML文檔讀到內(nèi)存中,從而可以進(jìn)行編輯、保存操作。TXMLDocument類是通過(guò)DOM(文檔對(duì)象模型)接口來(lái)訪問(wèn)XML文檔中的各個(gè)元素的。對(duì)于DOM接口的實(shí)現(xiàn)有多種方式,Delphi支持的方式有:
    1)微軟的MSXML SDK,這種方式是通過(guò)COM對(duì)象來(lái)實(shí)現(xiàn);
    2) Apache 的Xerces的實(shí)現(xiàn)方式;
    3)另外一種是開(kāi)源OpenXML實(shí)現(xiàn)方式。對(duì)于不同的接口實(shí)現(xiàn)方式可以通過(guò)設(shè)定TXMLDocument的DOMVender來(lái)進(jìn)行控制。
    支持XML的Delphi單元主要存在與…\Borland\Delphi7\Source\Xml目錄下,主要包括:XMLIntf,XMLDoc,xmldom,msxmldom,xercesxmldom,xdom,oxmldom等單元。
    ·XMLIntf――包括了Borland自己定義的XML文檔的接口;
    ·XMLDoc――是對(duì)XMLIntf中所定義接口的Borland實(shí)現(xiàn);
    ·Xmldom――定義了DOM(文檔對(duì)象模型)接口,這里對(duì)DOM接口進(jìn)行了Borland的實(shí)現(xiàn);
    ·Msxmldom――實(shí)現(xiàn)微軟對(duì)Xmldom中定義的接口的實(shí)現(xiàn),主要調(diào)用微軟的COM對(duì)象來(lái)實(shí)現(xiàn),對(duì)Xmldom中定義接口的封裝;
    ·Xercesxmldom――Borland通過(guò)Xerces XML DOM方式來(lái)實(shí)現(xiàn)對(duì)Xmldom中定義接口的封裝; l Oxmldom――Borland通過(guò)使用OpenXML來(lái)實(shí)現(xiàn)對(duì)Xmldom中定義接口的封裝;
    TXMLDocument類的屬性,請(qǐng)參考Borland的幫助文件;
    讀寫XML文檔
    ·讀取XML文檔
    通常情況下不通過(guò)直接使用TXMLDocument對(duì)象來(lái)進(jìn)行XML文件的讀取,而是使用XMLDoc單元中提供的幾個(gè)有用的函數(shù)來(lái)讀取XML文檔,這些函數(shù)包括:
    function LoadXMLDocument(const FileName: DOMString): IXMLDocument;
    function LoadXMLData(const XMLData: DOMString): IXMLDocument; overload;
    function LoadXMLData(const XMLData: string): IXMLDocument; overload;
    function NewXMLDocument(Version: DOMString = '1.0'): IXMLDocument;
    可以看出這些函數(shù)全部返回的是IXMLDocument接口,得到了IXMLDocument接口在進(jìn)行文檔的操作;這些函數(shù)都是通過(guò)創(chuàng)建TXMLDocument對(duì)象來(lái)實(shí)現(xiàn)對(duì)XML文檔的讀取的;其中NewXMLDocument僅僅創(chuàng)建一個(gè)IXMLDocument接口。
    可以這樣利用NewXMLDocument來(lái)讀取XML文檔:
    XMLDoc := NewXMLDocument;
    XMLDoc.LoadFromFile(FileName);
    ·保存XML文檔
    可以通過(guò)下面的方式來(lái)保存XML文檔:
    XMLDoc := NewXMLDocument;
    iRoot := IXMLDoc.CreateNode(‘TestXMLDocument’);
    XMLDoc.DocumentElement := iRoot;
    …
    XMLDoc.SaveToFile(FileName);
    可以看出通過(guò)接口來(lái)操作XML文檔是非常方便的;
    選用不同類型的XML解析方式