只得到大的xml对象的第一个N元素
问题描述:
我正在整合第三方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对象。有什么办法可以做到吗?其他建议,高度赞赏。
答
如果我要解析如此巨大的XML响应,我会使用流解析器来完成。
我没有一个经验,但快速谷歌搜索指向https://github.com/prewk/xml-string-streamer。
给它一个镜头,如果你有具体问题,那么我们可以尝试解决这个问题。
+0
感谢链接@avk戴 – vijayrana
大多数API允许您添加一个参数来限制结果的数量,因此您不仅可以改进转换的时间,还可以缩短接收的时间。 –
避免将其序列化为JSON并直接读取XML。尝试使用XMLReader类。这是该大型文件的当前标准API。 – ThW
我与我的提供者@lukegv进行了沟通,我无法限制结果的数量。所以,我面临问题 – vijayrana