在delphi中使用xml文檔的兩種方法

字號:

在Delphi中使用XML文檔有兩種方法,一是使用delphi 內(nèi)置的xml broker;一是使用msxml.dll 。
    一 使用xml broker, 是delphi 內(nèi)置的
    例:
    unit ShowXML;
    interface
    uses Classes HTTPApp Db DbClient Midas
    XMLBrokr WebComp MidItems;
    type
    TCustomShowXMLButton = class(TXMLButton IScriptComponent)
    protected
    XMLMethodName: string;
    { IScriptComponent }
    procedure AddElements(AddIntf: IAddScriptElements);
    function GetSubComponents: TObject;
    { IWebContent implementation }
    function ImplContent(Options: TWebContentOptions;
    ParentLayout: TLayout): string; override;
    end;
    TShowXMLButton = class(TCustomShowXMLButton)
    public
    constructor Create(AOwner: TComponent); override;
    published
    property Custom;
    property Style;
    property StyleRule;
    property Caption;
    property XMLBroker;
    property XMLUseParent;
    end;
    TShowDeltaButton = class(TCustomShowXMLButton)
    public
    constructor Create(AOwner: TComponent); override;
    published
    property Custom;
    property Style;
    property StyleRule;
    property Caption;
    property XMLBroker;
    property XMLUseParent;
    end;
    implementation
    uses sysutils MidProd;
    resourcestring
    sShowXML = 'Show XML';
    sShowDelta = 'Show Delta';
    procedure TCustomShowXMLButton.AddElements(
    AddIntf: IAddScriptElements);
    begin
    AddIntf.AddIncludeFile('xmlshow.js');
    end;
    function TCustomShowXMLButton.GetSubComponents: TObject;
    begin
    Result := nil;
    end;
    function TCustomShowXMLButton.ImplContent(Options: TWebContentOptions;
    ParentLayout: TLayout): string;
    var
    Attrs: string;
    Intf: ILayoutWebContent;
    FormVarName: string;
    RowSetVarName: string;
    begin
    AddQuotedAttrib(Attrs 'NAME' Name);
    AddQuotedAttrib(Attrs 'STYLE' Style);
    AddQuotedAttrib(Attrs 'CLASS' StyleRule);
    AddQuotedAttrib(Attrs 'VALUE' Self.Caption);
    AddCustomAttrib(Attrs Custom);
    if Assigned(XMLData.XMLBroker) then
    begin
    FormVarName := XMLData.XMLBroker.SubmitFormVarName;
    RowSetVarName := XMLData.XMLBroker.RowSetVarName(nil); // Row row set var name
    end;
    if not (coNoScript in Options.Flags) then
    Result :=
    Format(''#13#10
    [Attrs RowSetVarName XMLMethodName sXMLReadyVar])
    else
    Result :=
    Format(''#13#10
    [Attrs]);
    if Assigned(ParentLayout) and ParentLayout.GetInterface(ILayoutWebContent Intf) then
    Result := Intf.LayoutButton(Result GetLayoutAttributes);
    end;
    { TShowXMLButton }
    constructor TShowXMLButton.Create(AOwner: TComponent);
    begin
    inherited;
    DefaultCaption := sShowXML;
    XMLMethodName := 'root';
    end;
    { TShowDeltaButton }
    constructor TShowDeltaButton.Create(AOwner: TComponent);
    begin
    inherited;
    DefaultCaption := sShowDelta;
    XMLMethodName := 'getDelta()';
    end;