Sample code for 30+ languages & platforms
Xojo Plugin

Get FTP Directory Listing as XML

See more FTP Examples

Demonstrates how to call GetXmlDirListing and parse the results.

Chilkat Xojo Plugin Downloads

Xojo Plugin
Dim success As Boolean
success = False

// This example assumes Chilkat Ftp2 to have been previously unlocked.
// See Unlock Ftp2 for sample code.

Dim ftp As New Chilkat.Ftp2

ftp.Hostname = "www.my-ftp-server.com"
ftp.Username = "mFtpLogin"
ftp.Password = "myFtpPassword"

// Connect to the FTP server.
success = ftp.ConnectOnly()
If (success <> True) Then
    System.DebugLog(ftp.LastErrorText)
    Return
End If

// Authenticate with the FTP server.
success = ftp.LoginAfterConnectOnly()
If (success <> True) Then
    System.DebugLog(ftp.LastErrorText)
    Return
End If

// Retrieve (in XML format) the HOME directory of this FTP account.
Dim xmlListing As String
xmlListing = ftp.GetXmlDirListing("*.*")
If (ftp.LastMethodSuccess <> True) Then
    System.DebugLog(ftp.LastErrorText)
    Return
End If

// Now load the XML and parse it..
Dim xml As New Chilkat.Xml
success = xml.LoadXml(xmlListing)
System.DebugLog(xml.GetXml())

// Iterate over the XML...
Dim i As Int32
i = 0
Dim numEntries As Int32
numEntries = xml.NumChildren
While i < numEntries
    Dim xEntry As Chilkat.Xml
    xEntry = xml.GetChild(i)
    If (xEntry.TagEquals("dir") = True) Then
        System.DebugLog("Directory: " + xEntry.Content)
    Else
        Dim sz As Int32
        sz = xEntry.GetChildIntValue("size")
        System.DebugLog("File: " + xEntry.GetChildContent("name") + ", size: " + Str(sz))
        Dim xLastMod As Chilkat.Xml
        xLastMod = xEntry.FindChild("lastModTime")
        If (xEntry.LastMethodSuccess = True) Then
            Dim month As Int32
            month = xLastMod.GetAttrValueInt("m")
            Dim year As Int32
            year = xLastMod.GetAttrValueInt("y")
            Dim day As Int32
            day = xLastMod.GetAttrValueInt("d")
            System.DebugLog("    YYYY-MM-DD: " + Str(year) + "-" + Str(month) + "-" + Str(day))

        End If

    End If

    i = i + 1
Wend

success = ftp.Disconnect()

System.DebugLog("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>
// 
//