You can use this latest version of MSXML 6 (Microsoft XML Core Services) by importing dlls from delphi.

Here is an example of the generated code
// *********************************************************************// // Interface: IXMLDOMDocument // Flags: (4560) Hidden Dual NonExtensible OleAutomation Dispatchable // GUID: {2933BF81-7B36-11D2-B20E-00C04F983E60} // *********************************************************************// IXMLDOMDocument = interface(IXMLDOMNode) ['{2933BF81-7B36-11D2-B20E-00C04F983E60}'] function Get_doctype: IXMLDOMDocumentType; safecall; function Get_implementation_: IXMLDOMImplementation; safecall; function Get_documentElement: IXMLDOMElement; safecall; procedure _Set_documentElement(const DOMElement: IXMLDOMElement); safecall; function createElement(const tagName: WideString): IXMLDOMElement; safecall; function createDocumentFragment: IXMLDOMDocumentFragment; safecall; function createTextNode(const data: WideString): IXMLDOMText; safecall; function createComment(const data: WideString): IXMLDOMComment; safecall; function createCDATASection(const data: WideString): IXMLDOMCDATASection; safecall; function createProcessingInstruction(const target: WideString; const data: WideString): IXMLDOMProcessingInstruction; safecall; function createAttribute(const name: WideString): IXMLDOMAttribute; safecall; function createEntityReference(const name: WideString): IXMLDOMEntityReference; safecall; function getElementsByTagName(const tagName: WideString): IXMLDOMNodeList; safecall; function createNode(type_: OleVariant; const name: WideString; const namespaceURI: WideString): IXMLDOMNode; safecall; function nodeFromID(const idString: WideString): IXMLDOMNode; safecall; function load(xmlSource: OleVariant): WordBool; safecall; function Get_readyState: Integer; safecall; function Get_parseError: IXMLDOMParseError; safecall; function Get_url: WideString; safecall; function Get_async: WordBool; safecall; procedure Set_async(isAsync: WordBool); safecall; procedure abort; safecall; function loadXML(const bstrXML: WideString): WordBool; safecall; procedure save(destination: OleVariant); safecall; function Get_validateOnParse: WordBool; safecall; procedure Set_validateOnParse(isValidating: WordBool); safecall; function Get_resolveExternals: WordBool; safecall; procedure Set_resolveExternals(isResolving: WordBool); safecall; function Get_preserveWhiteSpace: WordBool; safecall; procedure Set_preserveWhiteSpace(isPreserving: WordBool); safecall; procedure Set_onreadystatechange(Param1: OleVariant); safecall; procedure Set_ondataavailable(Param1: OleVariant); safecall; procedure Set_ontransformnode(Param1: OleVariant); safecall; property doctype: IXMLDOMDocumentType read Get_doctype; property implementation_: IXMLDOMImplementation read Get_implementation_; property documentElement: IXMLDOMElement read Get_documentElement write _Set_documentElement; property readyState: Integer read Get_readyState; property parseError: IXMLDOMParseError read Get_parseError; property url: WideString read Get_url; property async: WordBool read Get_async write Set_async; property validateOnParse: WordBool read Get_validateOnParse write Set_validateOnParse; property resolveExternals: WordBool read Get_resolveExternals write Set_resolveExternals; property preserveWhiteSpace: WordBool read Get_preserveWhiteSpace write Set_preserveWhiteSpace; property onreadystatechange: OleVariant write Set_onreadystatechange; property ondataavailable: OleVariant write Set_ondataavailable; property ontransformnode: OleVariant write Set_ontransformnode; end;
EDIT
The TXMLDocument object (for delphi 7), located in XMLDoc.pas, is a wrapper for the MSXML version of 4 or less.
const { GUID from MSXML2_TLB.pas } CLASS_DOMDocument26: TGUID = '{F5078F1B-C551-11D3-89B9-0000F81FE221}'; CLASS_DOMDocument30: TGUID = '{F5078F32-C551-11D3-89B9-0000F81FE221}'; CLASS_DOMDocument40: TGUID = '{88D969C0-F192-11D4-A65F-0040963251E5}'; function CreateDOMDocument: IXMLDOMDocument; begin Result := TryObjectCreate([CLASS_DOMDocument40, CLASS_DOMDocument30, CLASS_DOMDocument26, msxml.CLASS_DOMDocument]) as IXMLDOMDocument; if not Assigned(Result) then raise DOMException.Create(SMSDOMNotInstalled); end;
From the Microsoft website:
MSXML4 was introduced to add features and improve performance, but was replaced by MSXML6. Customers on MSXML4 should consider switching to MSXML6 as soon as scheduled restrictions allow.
bye
source share