Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Get FTP Directory Listing as XMLDemonstrates how to call GetXmlDirListing and parse the results.
IncludeFile "CkFtp2.pb" IncludeFile "CkXml.pb" Procedure ChilkatExample() ; This example assumes Chilkat Ftp2 to have been previously unlocked. ; See Unlock Ftp2 for sample code. ftp.i = CkFtp2::ckCreate() If ftp.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkFtp2::setCkHostname(ftp, "www.my-ftp-server.com") CkFtp2::setCkUsername(ftp, "mFtpLogin") CkFtp2::setCkPassword(ftp, "myFtpPassword") ; Connect to the FTP server. success.i = CkFtp2::ckConnectOnly(ftp) If success <> 1 Debug CkFtp2::ckLastErrorText(ftp) CkFtp2::ckDispose(ftp) ProcedureReturn EndIf ; Authenticate with the FTP server. success = CkFtp2::ckLoginAfterConnectOnly(ftp) If success <> 1 Debug CkFtp2::ckLastErrorText(ftp) CkFtp2::ckDispose(ftp) ProcedureReturn EndIf ; Retrieve (in XML format) the HOME directory of this FTP account. xmlListing.s = CkFtp2::ckGetXmlDirListing(ftp,"*.*") If CkFtp2::ckLastMethodSuccess(ftp) <> 1 Debug CkFtp2::ckLastErrorText(ftp) CkFtp2::ckDispose(ftp) ProcedureReturn EndIf ; Now load the XML and parse it.. xml.i = CkXml::ckCreate() If xml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkXml::ckLoadXml(xml,xmlListing) Debug CkXml::ckGetXml(xml) ; Iterate over the XML... i.i = 0 numEntries.i = CkXml::ckNumChildren(xml) While i < numEntries xEntry.i = CkXml::ckGetChild(xml,i) If CkXml::ckTagEquals(xEntry,"dir") = 1 Debug "Directory: " + CkXml::ckContent(xEntry) Else sz.i = CkXml::ckGetChildIntValue(xEntry,"size") Debug "File: " + CkXml::ckGetChildContent(xEntry,"name") + ", size: " + Str(sz) xLastMod.i = CkXml::ckFindChild(xEntry,"lastModTime") If CkXml::ckLastMethodSuccess(xEntry) = 1 month.i = CkXml::ckGetAttrValueInt(xLastMod,"m") year.i = CkXml::ckGetAttrValueInt(xLastMod,"y") day.i = CkXml::ckGetAttrValueInt(xLastMod,"d") Debug " YYYY-MM-DD: " + Str(year) + "-" + Str(month) + "-" + Str(day) CkXml::ckDispose(xLastMod) EndIf EndIf CkXml::ckDispose(xEntry) i = i + 1 Wend CkFtp2::ckDisconnect(ftp) Debug "Success." ; Sample XML directory listing: ; <?xml version="1.0" encoding="utf-8" ?> ; <remoteDir> ; <dir>Desktop</dir> ; <dir>Documents</dir> ; <dir>Downloads</dir> ; <dir>Music</dir> ; <dir>Pictures</dir> ; <dir>Public</dir> ; <dir>Templates</dir> ; <dir>Videos</dir> ; <file> ; <name>c.py</name> ; <size>1244</size> ; <lastModTime full="20151009-000000" y="2015" d="9" m="10" hh="0" mm="0" ss="0" /> ; </file> ; <file> ; <name>cacerts_linux</name> ; <size>177207</size> ; <lastModTime full="20140915-000000" y="2014" d="15" m="9" hh="0" mm="0" ss="0" /> ; </file> ; <file> ; <name>empty.txt</name> ; <size>0</size> ; <lastModTime full="20150917-000000" y="2015" d="17" m="9" hh="0" mm="0" ss="0" /> ; </file> ; <file> ; <name>hamlet.xml</name> ; <size>279658</size> ; <lastModTime full="20160917-084100" y="2016" d="17" m="9" hh="8" mm="41" ss="0" /> ; </file> ; </remoteDir> ; ; CkFtp2::ckDispose(ftp) CkXml::ckDispose(xml) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.