Переглянути джерело

* Some small improvements, multiple documents allowed, help message

git-svn-id: trunk@44294 -
michael 5 роки тому
батько
коміт
8e1e9cb20b
1 змінених файлів з 33 додано та 5 видалено
  1. 33 5
      packages/fcl-xml/examples/htmlwithsax.lpr

+ 33 - 5
packages/fcl-xml/examples/htmlwithsax.lpr

@@ -9,8 +9,9 @@ Type
   TMyApp = Class(TCustomApplication)
   Private
     Indent : string;
-    MyReader : THTMLReader;
+    procedure DoEndDocument(Sender: TObject);
     procedure DoEndElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString);
+    procedure DoFile(const aFileName: String);
     procedure DoStartDocument(Sender: TObject);
     procedure DoStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString; Atts: TSAXAttributes);
   Protected
@@ -20,24 +21,45 @@ Type
 
 { TMyApp }
 
-procedure TMyApp.DoRun;
+procedure TMyApp.DoFile(const aFileName : String);
+
 var
   F : TFileStream;
+  MyReader : THTMLReader;
+
 begin
-  StopOnException:=True;
-  Terminate;
-  F:=TFileStream.Create(Params[1],fmOpenRead or fmShareDenyWrite);
+  MyReader:=Nil;
+  F:=TFileStream.Create(aFileName,fmOpenRead or fmShareDenyWrite);
   try
     MyReader:=THTMLReader.Create;
     MyReader.OnStartDocument:=@DoStartDocument;
     MyReader.OnStartElement:=@DoStartElement;
     MyReader.OnEndElement:=@DoEndElement;
+    MyReader.OnEndDocument:=@DoEndDocument;
     MyReader.ParseStream(F);
   finally
+    FreeAndNil(MyReader);
     F.Free;
   end;
 end;
 
+procedure TMyApp.DoRun;
+
+var
+  I : Integer;
+
+begin
+  StopOnException:=True;
+  Terminate;
+  if ParamCount<1 then
+    begin
+    Writeln('Usage : ',ExtractFileName(ExeName),' <htmlfile1> [htmlfile2 [htmlfile3]]');
+    Exit;
+    end;
+  for I:=1 to ParamCount do
+      DoFile(Params[i]);
+end;
+
 procedure TMyApp.DoStartDocument(Sender: TObject);
 begin
   Writeln('Document start');
@@ -49,6 +71,12 @@ begin
   Indent:=Copy(Indent,1,Length(Indent)-2);
 end;
 
+procedure TMyApp.DoEndDocument(Sender: TObject);
+begin
+  Writeln('Document end');
+  Indent:='';
+end;
+
 procedure TMyApp.DoStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString; Atts: TSAXAttributes);
 
 Var