halilim/xml-iterator

低内存占用且易于使用的XML阅读器,转换成simplexml/数组迭代器。

1.0.1 2017-08-10 22:40 UTC

This package is auto-updated.

Last update: 2024-09-21 19:25:06 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

低内存占用且易于使用的XML阅读器,转换成数组/对象迭代器(基本上是时间和空间的权衡)。主要用于从外部API导入顺序数据。

安装(Composer)

$ composer require "halilim/xml-iterator"

使用

use XmlIterator\XmlIterator;
$it = new XmlIterator("http://api.example.com/products.xml", "product");

foreach ($it as $k => $v) {
    // Do something with each row ($v), save it to db, echo it, etc. E.g.:
    // echo $k . " => " . var_export($v, true) . "\n\n";
}

注意:当处理远程文件时,建议首先将其复制到临时本地位置。否则,如果导入时间过长,可能会出现“文档末尾有额外内容”之类的错误(至少这是我的经历)。

示例输入

<?xml version="1.0" encoding="UTF-8"?>
<products>
    <product>
        <title>Lorem</title>
        <brand>ACME</brand>
        <images>
            <image>http://www.example.com/image1.jpg</image>
            <image>http://www.example.com/image2.jpg</image>
        </images>
    </product>
    <product>
        <title>Ipsum</title>
        <brand>Etc LLC</brand>
        <images>
            <image>http://www.example.com/image3.jpg</image>
            <image>http://www.example.com/image4.jpg</image>
        </images>
    </product>
</products>

示例输出

0 => array (
  'title' => 'Lorem',
  'brand' => 'ACME',
  'images' =>
  array (
    'image' =>
    array (
      0 => 'http://www.example.com/image1.jpg',
      1 => 'http://www.example.com/image2.jpg',
    ),
  ),
)

1 => array (
  'title' => 'Ipsum',
  'brand' => 'Etc LLC',
  'images' =>
  array (
    'image' =>
    array (
      0 => 'http://www.example.com/image3.jpg',
      1 => 'http://www.example.com/image4.jpg',
    ),
  ),
)

测试

$ composer test

贡献

请参阅CONTRIBUTINGCODE_OF_CONDUCT以获取详细信息。

贡献者名单

我们感谢所有我们的贡献者

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。