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


Why does only one (the last) XML file is saved?

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

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

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

你到底想干什么?

您将它们保存为相同的名称,因此当然前面的那些将丢失。

试试这个:

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

将文件依次保存为test0.xml, test1.xml, test2.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');