Perl
Chilkat2 Perl
Get FTP Directory Listing as XML
See more FTP Examples
Demonstrates how to call GetXmlDirListing and parse the results.Chilkat Perl Downloads
use strict;
use warnings;
use Chilkat2;
# This example assumes Chilkat Ftp2 to have been previously unlocked.
# See Unlock Ftp2 for sample code.
my $ftp = Chilkat2::Ftp2->new;
$ftp->Hostname('www.my-ftp-server.com');
$ftp->Username('mFtpLogin');
$ftp->Password('myFtpPassword');
# Connect to the FTP server.
my $success = $ftp->ConnectOnly();
if (!$success) {
print $ftp->LastErrorText, "\n";
exit;
}
# Authenticate with the FTP server.
$success = $ftp->LoginAfterConnectOnly();
if (!$success) {
print $ftp->LastErrorText, "\n";
exit;
}
# Retrieve (in XML format) the HOME directory of this FTP account.
my $xmlListing = $ftp->GetXmlDirListing('*.*');
if (!$ftp->LastMethodSuccess) {
print $ftp->LastErrorText, "\n";
exit;
}
# Now load the XML and parse it..
my $xml = Chilkat2::Xml->new;
$xml->LoadXml($xmlListing);
print $xml->GetXml(), "\n";
# Iterate over the XML...
my $i = 0;
my $numEntries = $xml->NumChildren;
while ($i < $numEntries) {
my $xEntry = $xml->GetChild($i);
if ($xEntry->TagEquals('dir')) {
print 'Directory: ', $xEntry->Content, "\n";
} else {
my $sz = $xEntry->GetChildIntValue('size');
print 'File: ', $xEntry->GetChildContent('name'), ', size: ', $sz, "\n";
my $xLastMod = $xEntry->FindChild('lastModTime');
if ($xEntry->LastMethodSuccess) {
my $month = $xLastMod->GetAttrValueInt('m');
my $year = $xLastMod->GetAttrValueInt('y');
my $day = $xLastMod->GetAttrValueInt('d');
print ' YYYY-MM-DD: ', $year, '-', $month, '-', $day, "\n";
}
}
$i = $i + 1;
}
$ftp->Disconnect();
print "Success.\n";
# 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>
#
#