⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saxphilo.pas

📁 Delphi7从入门到精通及附书源码 Delphi7从入门到精通及附书源码
💻 PAS
字号:
unit saxphilo;

interface

uses
  xdom, classes, strutils;

type
  TDataSaxHandler = class (TXmlStandardHandler)
  protected
    stack: TStringList;
    strCurrent: string;
  public
    constructor Create(aowner: TComponent); override;

    function endElement(const sender: TXmlCustomProcessorAgent;
                        const locator: TdomStandardLocator;
                              namespaceURI,
                              tagName: wideString): TXmlParserError; override;
    function PCDATA(const sender: TXmlCustomProcessorAgent;
                    const locator: TdomStandardLocator;
                          data: wideString): TXmlParserError; override;
    function startElement(const sender: TXmlCustomProcessorAgent;
                          const locator: TdomStandardLocator;
                                namespaceURI,
                                tagName: wideString;
                                attributes: TdomNameValueList): TXmlParserError; override;
    destructor Destroy; override;

  end;

implementation

uses
  LargeXmlForm, saxform;

{ TDataSaxHandler }

constructor TDataSaxHandler.Create(aowner: TComponent);
begin
  inherited;
  stack := tstringlist.create;
end;

destructor TDataSaxHandler.Destroy;
begin
  stack.Free;
  inherited;
end;

function TDataSaxHandler.endElement(const sender: TXmlCustomProcessorAgent;
  const locator: TdomStandardLocator; namespaceURI,
  tagName: wideString): TXmlParserError;
begin
  if tagName = 'employeeData' then
    Form1.clientdataset2.Post;
  if stack.Count > 2 then
  begin
    Form1.ClientDataSet2.Edit;
    Form1.ClientDataSet2.FieldByName (tagName).AsString := strCurrent;
  end;
  stack.Delete (stack.Count - 1);
  Result := nil;
end;

function TDataSaxHandler.PCDATA(const sender: TXmlCustomProcessorAgent;
  const locator: TdomStandardLocator; data: wideString): TXmlParserError;
begin
  strCurrent := strCurrent + RemoveWhites(data);
  Result := nil;
end;

function TDataSaxHandler.startElement(
  const sender: TXmlCustomProcessorAgent;
  const locator: TdomStandardLocator; namespaceURI, tagName: wideString;
  attributes: TdomNameValueList): TXmlParserError;
begin
  stack.Add (tagName);
  if tagName = 'employeeData' then
    Form1.clientdataset2.Insert;
  strCurrent := '';
  Result := nil;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -