创建xml文件

时间:2014-02-20 09:11:04

标签: php xml fopen fwrite

我正在尝试创建一个xml文件并在其中编写代码。但问题是,我必须将其分为3个部分,因为代码的中间部分是循环的。到目前为止,这就是我的代码的样子。

修改

这是我想要的输出

<download serverurl='http://localhost/files'>
    <file filename='image1.PNG' md5='b45110dd47aa28f8400295ec70e6b0ef'/>
    <file filename='image2.jpg' md5='3a3b3f573682ab177939b748c4623db0'/>
    <file filename='image3.jpg' md5='deaee69864bedcd5c60af3bb46b47edc'/>

我总是收到的。

           <file filename='image2.jpg' md5='3a3b3f573682ab177939b748c4623db0'/>
    <file filename='image3.jpg' md5='deaee69864bedcd5c60af3bb46b47edc'/>
<download serverurl='http://localhost/files'>              
 <file filename='image1.PNG' md5='b45110dd47aa28f8400295ec70e6b0ef'/>
</download>

我得到的输出几乎是随机的。

END OF EDIT

public function download_package1(){
    $form = $this->getUserData();

    $serverurl = "<download serverurl='http://222.127.182.57/file'>";

    file_put_contents('download.xml', $serverurl, FILE_APPEND);
}

public function download_package_images ($filename){
    $form = $this->getUserData();

    $images = "
    <file filename='".$filename."' md5='".md5_file($filename)."'/>";

    file_put_contents('download.xml', $images, FILE_APPEND);

    //THIS IS FUNCTION IS IN LOOP. THERE ARE THE FILENAMES OF THE IMAGES   UPLOADED
}

public function download_package_end (){
    $form = $this->getUserData();

    $end = "
</download>";

    file_put_contents('download.xml', $end, FILE_APPEND);

但是订单没有修复。我已经尝试了fopen/fopen,但同样的事情发生了。我真的不知道怎么解释这个,但我希望我有道理。如果有人能帮助我,我会非常感激。谢谢。

1 个答案:

答案 0 :(得分:0)

不是手动构建XML,而是使用xml-parser:

$xml = simplexml_load_string("<download />");
$xml->addAttribute('serverurl', 'http://localhost/files');

for ($i = 0;$i < 3; $i++) 
{
    $file = $xml->addChild('file');
    $file->addAttribute('filename', "image$i.png");
    $file->addAttribute('md5', 'whateverhash');    
}  

$xml->asXML('filename.xml');

看到它有效:https://eval.in/104654