Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program test7;
- uses
- Classes, XMLReader, XMLTextReader, XMLUtils, LibCurl, UnixType, Pipes;
- var
- URL : Pchar = 'http://fullcirclemagazine.org/author/ronnie-2/feed/';
- hCurl : pCurl;
- inPipe : TInputPipeStream;
- outPipe : TOutputPipeStream;
- reader : TXMLReader;
- settings : TXMLReaderSettings;
- input : TXMLInputSource;
- title, link : string;
- nextTextIsTitle, nextTextIsLink : boolean;
- Function DoWrite(Ptr : Pointer; Size : size_t; nmemb: size_t; Data : Pointer) : size_t; cdecl;
- begin
- DoWrite := TStream(Data).Write(Ptr^,Size*nmemb);
- end;
- begin
- settings := TXMLReaderSettings.Create;
- settings.PreserveWhiteSpace := false;
- settings.Namespaces := true;
- CreatePipeStreams (inPipe, outPipe);
- hCurl:= curl_easy_init;
- if Assigned(hCurl) then
- begin
- curl_easy_setopt(hCurl,CURLOPT_VERBOSE, [True]);
- curl_easy_setopt(hCurl,CURLOPT_URL,[URL]);
- curl_easy_setopt(hCurl,CURLOPT_WRITEFUNCTION,[@DoWrite]);
- curl_easy_setopt(hCurl,CURLOPT_WRITEDATA,[Pointer(outPipe)]);
- curl_easy_perform(hCurl);
- curl_easy_cleanup(hCurl);
- end;
- input := TXMLInputSource.Create(inPipe);
- reader := TXMLTextReader.Create(input, settings);
- while reader.Read do
- begin
- if reader.NodeType = ntElement then
- if reader.name = 'title' then begin
- nextTextIsTitle := true;
- nextTextIsLink := false;
- end else if reader.name = 'link' then begin
- nextTextIsTitle := false;
- nextTextIsLink := true;
- end else begin
- nextTextIsTitle := false;
- nextTextIsLink := false;
- end;
- if reader.NodeType = ntText then
- if nextTextIsTitle then begin
- title := reader.value;
- nextTextIsTitle := false;
- end else if nextTextIsLink then begin
- link := reader.value;
- nextTextIsLink := false;
- Writeln (title, ' -> ', link);
- end;
- end;
- reader.Free;
- input.Free;
- settings.Free;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement