2017-04-02 132 views
0

我想用更少的内存从远程XML URL获取数据,我正在使用simplexml_load_string(),但我不确定我的代码和xml feed包含大约980 records,那么获取这些大数据并将其转换为array的最佳方法是什么?如何从URL使用PHP获取XML数据?

我的代码:

$xmlURL = 'http://www.ironitekstil.com/store/xmlfeed/productsxml.aspx?xslt=picksel.xsl'; 
$c = curl_init(); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($c, CURLOPT_URL, $xmlURL); 
$contents = curl_exec($c); 
curl_close($c); 

if ($contents) { 
    $xmlString = $contents; 
    $xml = simplexml_load_string($xmlString); 
    echo '<pre>'; 
    print_r($xml); 
    //echo count($xml); // 980 records 
    echo '</pre>'; 
}else { 
    return FALSE; 
} 

回答

0

的SimpleXML将加载整个数据到存储器(它是一个抽象DOM层)。试试XMLReader。它可以打开URL并通过标签读取XML标签。当前节点(及其后代可以扩展为DOM,这允许您迭代外部节点(列表)并加载内部部分(记录)。

您可以使用PHP Streamwrappers直接打开URL或使用CURL提取并将其存储到本地文件中。