DataFlex
DataFlex
Get FTP Directory Listing as XML
See more FTP Examples
Demonstrates how to call GetXmlDirListing and parse the results.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoFtp
String sXmlListing
Handle hoXml
Integer i
Integer iNumEntries
Variant vXEntry
Handle hoXEntry
Integer iSz
Variant vXLastMod
Handle hoXLastMod
Integer iMonth
Integer iYear
Integer iDay
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example assumes Chilkat Ftp2 to have been previously unlocked.
// See Unlock Ftp2 for sample code.
Get Create (RefClass(cComChilkatFtp2)) To hoFtp
If (Not(IsComObjectCreated(hoFtp))) Begin
Send CreateComObject of hoFtp
End
Set ComHostname Of hoFtp To "www.my-ftp-server.com"
Set ComUsername Of hoFtp To "mFtpLogin"
Set ComPassword Of hoFtp To "myFtpPassword"
// Connect to the FTP server.
Get ComConnectOnly Of hoFtp To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoFtp To sTemp1
Showln sTemp1
Procedure_Return
End
// Authenticate with the FTP server.
Get ComLoginAfterConnectOnly Of hoFtp To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoFtp To sTemp1
Showln sTemp1
Procedure_Return
End
// Retrieve (in XML format) the HOME directory of this FTP account.
Get ComGetXmlDirListing Of hoFtp "*.*" To sXmlListing
Get ComLastMethodSuccess Of hoFtp To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoFtp To sTemp1
Showln sTemp1
Procedure_Return
End
// Now load the XML and parse it..
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Get ComLoadXml Of hoXml sXmlListing To iSuccess
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
// Iterate over the XML...
Move 0 To i
Get ComNumChildren Of hoXml To iNumEntries
While (i < iNumEntries)
Get ComGetChild Of hoXml i To vXEntry
If (IsComObject(vXEntry)) Begin
Get Create (RefClass(cComChilkatXml)) To hoXEntry
Set pvComObject Of hoXEntry To vXEntry
End
Get ComTagEquals Of hoXEntry "dir" To bTemp1
If (bTemp1 = True) Begin
Get ComContent Of hoXEntry To sTemp1
Showln "Directory: " sTemp1
End
Else Begin
Get ComGetChildIntValue Of hoXEntry "size" To iSz
Get ComGetChildContent Of hoXEntry "name" To sTemp1
Showln "File: " sTemp1 ", size: " iSz
Get ComFindChild Of hoXEntry "lastModTime" To vXLastMod
If (IsComObject(vXLastMod)) Begin
Get Create (RefClass(cComChilkatXml)) To hoXLastMod
Set pvComObject Of hoXLastMod To vXLastMod
End
Get ComLastMethodSuccess Of hoXEntry To bTemp1
If (bTemp1 = True) Begin
Get ComGetAttrValueInt Of hoXLastMod "m" To iMonth
Get ComGetAttrValueInt Of hoXLastMod "y" To iYear
Get ComGetAttrValueInt Of hoXLastMod "d" To iDay
Showln " YYYY-MM-DD: " iYear "-" iMonth "-" iDay
Send Destroy of hoXLastMod
End
End
Send Destroy of hoXEntry
Move (i + 1) To i
Loop
Get ComDisconnect Of hoFtp To iSuccess
Showln "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>
//
//
End_Procedure