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解析方式
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解析方式