2017-02-15 60 views
1

我正在整合第三方API,每个搜索返回大约20MB的数据。它返回约500个项目。这对我来说太多了。所以,我只想使用前50项。只得到大的xml对象的第一个N元素

我尝试:从API

$xml = simplexml_load_string($apiRequest); 
$object = json_decode(json_encode($xml)); 
$items = array_slice($object, 0, 50); 

近似响应时间约为50秒(当我在邮递员测试)。收到响应后,将其转换为std对象并进行其他计算会减慢很多。所以,我想加快速度。我想拆分收到的XML响应获得前50项,然后将其转换为std对象。有什么办法可以做到吗?其他建议,高度赞赏。

+0

大多数API允许您添加一个参数来限制结果的数量,因此您不仅可以改进转换的时间,还可以缩短接收的时间。 –

+0

避免将其序列化为JSON并直接读取XML。尝试使用XMLReader类。这是该大型文件的当前标准API。 – ThW

+0

我与我的提供者@lukegv进行了沟通,我无法限制结果的数量。所以,我面临问题 – vijayrana

回答

-1

如果我要解析如此巨大的XML响应,我会使用流解析器来完成。

我没有一个经验,但快速谷歌搜索指向https://github.com/prewk/xml-string-streamer

给它一个镜头,如果你有具体问题,那么我们可以尝试解决这个问题。

+0

感谢链接@avk戴 – vijayrana