2011-10-03 72 views
0

我使用下面的内容来保存我在数组中的XML地址的内容。但是只保存一个XML,特别是最后一个。我在这里错过了什么?为什么只保存一个(最后一个)XML文件?

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

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

回答

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'); 
+0

我看,有没有什么办法只创建一个文件? – EnexoOnoma

+0

查看更新的代码。 – AlienWebguy

+0

我尝试了两种方法。第一,我没有任何问题,但第二个给我错误。 '实体:第56行:解析器错误:XML声明只允许在文档开始处“实体:第57行:解析器错误:文档结尾处的额外内容”等。我试图得到的XML是feedburner RSS – EnexoOnoma

2

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

你究竟想在这里做什么?

2

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

+0

感谢你为这个。但我有个问题。在我的页面中,我加载了很多外部rss并输出了一些内容。如果我将它们保存在服务器上,加载速度会更快吗? – EnexoOnoma

+0

是的。我们称之为“缓存”。 –

+0

我刚刚检查过。速度的差异是惊人的。 – EnexoOnoma

相关问题