2011-06-28 35 views
0

我想動態創建一個XML文件通過php,讀取我的ftp上的特定目錄上的DIRS和FILES。不能賦值遞歸函數內的變量

到目前爲止神,這裏的代碼:

<?php 

$path = "."; 


$dir_handle = @opendir($path) or die("Unable to open $path"); 

function list_dir($dir_handle,$path) 
{ 



    while (false !== ($file = readdir($dir_handle))) { 

     $dir =$path.'/'.$file; 
    $link =$path.'/'; 


     if(is_dir($dir) && $file != '.' && $file !='..') 

     { 

     $handle = @opendir($dir) or die("unable to open file $file"); 

    $xmlString .= '<' . $file . '>'; 

    list_dir($handle, $dir); 

    $xmlString .= '</' . $file . '>'; 


     } 

    elseif($file != '.' && $file !='..' && $file !='ftpteste.php') 

     { 

    $xmlString .= '<IMAGE>'; 
    $xmlString .= '<PHOTO>' . $link . '' . $file . '</PHOTO>'; 
    $xmlString .= '</IMAGE>'; 

     } 
    } 


closedir($dir_handle); 

} 



$xmlString ='<XML>'; 

list_dir($dir_handle,$path); 

$xmlString .="</XML>"; 





$strXMLhead = '<?xml version="1.0" encoding="UTF-8" ?>'; 
$xmlString = $strXMLhead . "\n" . $xmlString; 



$xmlLoc = "../../interiores/xml/content.xml"; 

$fileXML = fopen($xmlLoc, "w+") or die("Can't open XML file"); 


if(!fwrite($fileXML, pack("CCC",0xef,0xbb,0xbf))) 
{ 
print "Error Saving File"; 
} 
else 
{ 
fwrite($fileXML, $xmlString); 
print "XML file saved"; 
} 

fclose($fileXML); 

?> 

的問題是,我越來越對$了XmlString無輸出函數內部運行。如果我使用Print而不是加入字符串,那麼它可以完成這項工作。但我需要它在一個變量爲了保存到文件。

保存到文件沒問題。

應該輸出是這樣的:

<XML> 

<$DIR NAME> 
<IMAGE> 
<PHOTO>$FILE_NAME</PHOTO> 
</IMAGE> 
</$DIR NAME> 

</XML> 

誰能幫助我?

在此先感謝, 阿圖爾

回答

0

list_dir()返回您正在構建的XML。

function list_dir($dir_handle,$path) 
{ 
    ... 
    $xmlString .= list_dir($handle, $dir); 
    ... 
    return $xmlString; 
} 

$xmlString = '<XML>' . list_dir($dir_handle,$path) . '</XML>'; 
1

我想你應該看看的DomDocument對象。它提供了一種用節點創建文檔的簡單方法(如xml文檔)。你將能夠避免你的問題。