Visual FoxPro
Visual FoxPro
Get FTP Directory Listing as XML
See more FTP Examples
Demonstrates how to call GetXmlDirListing and parse the results.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loFtp
LOCAL lcXmlListing
LOCAL loXml
LOCAL i
LOCAL lnNumEntries
LOCAL loXEntry
LOCAL lnSz
LOCAL loXLastMod
LOCAL lnMonth
LOCAL lnYear
LOCAL lnDay
lnSuccess = 0
* This example assumes Chilkat Ftp2 to have been previously unlocked.
* See Unlock Ftp2 for sample code.
loFtp = CreateObject('Chilkat.Ftp2')
loFtp.Hostname = "www.my-ftp-server.com"
loFtp.Username = "mFtpLogin"
loFtp.Password = "myFtpPassword"
* Connect to the FTP server.
lnSuccess = loFtp.ConnectOnly()
IF (lnSuccess <> 1) THEN
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
* Authenticate with the FTP server.
lnSuccess = loFtp.LoginAfterConnectOnly()
IF (lnSuccess <> 1) THEN
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
* Retrieve (in XML format) the HOME directory of this FTP account.
lcXmlListing = loFtp.GetXmlDirListing("*.*")
IF (loFtp.LastMethodSuccess <> 1) THEN
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
* Now load the XML and parse it..
loXml = CreateObject('Chilkat.Xml')
loXml.LoadXml(lcXmlListing)
? loXml.GetXml()
* Iterate over the XML...
i = 0
lnNumEntries = loXml.NumChildren
DO WHILE i < lnNumEntries
loXEntry = loXml.GetChild(i)
IF (loXEntry.TagEquals("dir") = 1) THEN
? "Directory: " + loXEntry.Content
ELSE
lnSz = loXEntry.GetChildIntValue("size")
? "File: " + loXEntry.GetChildContent("name") + ", size: " + STR(lnSz)
loXLastMod = loXEntry.FindChild("lastModTime")
IF (loXEntry.LastMethodSuccess = 1) THEN
lnMonth = loXLastMod.GetAttrValueInt("m")
lnYear = loXLastMod.GetAttrValueInt("y")
lnDay = loXLastMod.GetAttrValueInt("d")
? " YYYY-MM-DD: " + STR(lnYear) + "-" + STR(lnMonth) + "-" + STR(lnDay)
RELEASE loXLastMod
ENDIF
ENDIF
RELEASE loXEntry
i = i + 1
ENDDO
loFtp.Disconnect()
? "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>
*
*
RELEASE loFtp
RELEASE loXml