0

phpを介して動的にXMLファイルを作成し、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で出力が得られないことです。文字列を結合する代わりに印刷を使用すれば問題ありません。しかし、ファイルに保存するには、変数に含める必要があります。

ファイルに保存しても大丈夫です。

次のように出力されます。

<XML>

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

</XML>

誰かがこれを手伝ってくれますか?

よろしくお願いします、artur

4

2 に答える 2

1

DomDocumentオブジェクトを確認する必要があると思います。これは、ノードを含むドキュメント(xmlドキュメントなど)を作成する簡単な方法を提供します。あなたはそれに関するあなたの問題を避けることができるでしょう。

于 2011-06-28T03:01:54.877 に答える
0

作成元のXMLを返しますlist_dir()

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

$xmlString = '<XML>' . list_dir($dir_handle,$path) . '</XML>';
于 2011-06-28T03:28:00.243 に答える