【问题标题】:get only first N element of large xml object仅获取大型 xml 对象的前 N ​​个元素
【发布时间】:2017-07-03 18:18:31
【问题描述】:

我正在集成一个第三方 API,它为每次搜索返回大约 20MB 的数据。它返回大约 500 个项目。这对我来说数据太多了。所以,我只想使用前 50 个项目。

我的尝试:

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

API 的大约响应时间约为 50 秒(当我在邮递员上测试时)。收到响应后,将其转换为 std 对象并进行其他计算会减慢很多。所以,我想加快速度。我想拆分收到的前 50 个项目的 XML 响应,然后将其转换为 std 对象。有什么办法吗?其他建议非常感谢。

【问题讨论】:

  • 大多数API都允许你添加一个参数来限制结果的数量,这样你不仅可以提高转换时间,还可以提高接收时间。
  • 请避免将其序列化为 JSON 并直接读取 XML。尝试使用 XMLReader 类。它是该大文件的当前标准 API。
  • 我已经与我的提供者@lukegv 进行了沟通,我无法限制结果的数量。所以,我面临问题

标签: php xml performance curl optimization


【解决方案1】:

如果我要解析如此庞大的 XML 响应,我会使用流解析器。

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

试一试,如果您有具体问题,我们可以尝试解决。

【讨论】:

  • 感谢@avk dai 的链接
猜你喜欢
  • 2022-07-01
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2014-07-06
  • 2014-09-17
  • 2017-02-27
相关资源
最近更新 更多