为什么只保存一个(最后一个)XML文件?

时间:2011-10-03 03:46:58

标签: php xml

我使用下面这个来保存我在数组中的XML地址的内容。但是只保存一个XML,特别是最后一个。我在这里缺少什么?

$filenames = array('xml url','xml url','xml url');

foreach( $filenames as $filename) {
$xml = simplexml_load_file( $filename );
$xml->asXML("test.xml");
}

3 个答案:

答案 0 :(得分:2)

您似乎打开每个XML文件,然后将它们保存在同一位置。写入文件1,然后文件2覆盖它,然后文件3 ...简而言之,最后一个文件将覆盖以前的文件,因此“只保存最后一个文件”。

你到底想做什么?

答案 1 :(得分:2)

你将它们全部保存为相同的名称,所以当然早先的会丢失。

答案 2 :(得分:1)

试试这个:

$filenames = array('xml url','xml url','xml url');

foreach( $filenames as $key => $filename) {
    $xml = simplexml_load_file( $filename );
    $xml->asXML('test' . $key. '.xml');
}

应该按顺序将文件保存为test0.xmltest1.xmltest2.xml等等。

如果您希望将所有加载的XML URL附加到单个文件中,您可以执行以下操作:

$filenames = array('xml url','xml url','xml url');

$fullXml = array();
foreach( $filenames as $key => $filename) {
    $xml = simplexml_load_file( $filename );

    // Convert the simplexml object into a string, and add it to an array
    $fullXml[] = $xml->asXML();
}

// Implode the array of all our xml into one big xml string
$fullXml = implode("\n", $fullXml);

// Load the new big xml string into a simplexml object
$xml = simplexml_load_string($fullXml);

// Now we can save the entire xml as your file
$xml->asXml('test.xml');