将大型XML文件拆分为较小的文件

时间:2013-08-26 14:23:02

标签: php xml simplexml

我有一个电子商务网站,需要通过从分销商处通过ftp下载的巨大XML文件来更新产品。

products.xml文件的大小约为21MB,拉动数据并循环遍历它对于单次传递来说太简陋了。

我需要能够将原始XML文件或处理过的SimpleXMLElement分成1000个产品,然后加载文件并单独处理。

我将xml拉入SimpleXMLElement然后将其转换为数组,所以它看起来像这样:

[1] => Array
    (
        [PRODUCTS_NAME] => Product Name
        [PRODUCTS_DESCRIPTION] => Product Description
        [PRODUCTS_IMAGE] => 1234.jpg
        [PRODUCTS_PRICE] => 9.99
        [PRODUCTS_MODEL] => 1234
        [ITEM_BRANDNAME] => Acme Inc.
        [ITEM_UPC] => 01234567890
        [ITEM_HEIGHT] => 0.500
        [ITEM_LENGTH] => 4.250
        [ITEM_DIAMETER] => 3.375
        [PRODUCTS_WEIGHT] => 0.05
        [MANUFACTURERS_NAME] => Acme Distributors
        [ITEM_VENDOR_NUMBER] => XXX-1234
        [PRODUCTS_QUANTITY] => 100
        [DATE_RECIEVED] => 0000-00-00 00:00:00
        [PROP_PACKAGING] => Blister Card
        [PRODUCT_CLASS] => BAT
        [PRODUCTS_TYPE] => Batteries
    )

如何在每个文件中创建1000个产品的单个文件并保存?

2 个答案:

答案 0 :(得分:2)

您可以使用simplexml函数执行此操作:

$xml = simplexml_load_file('products.xml');

foreach($xml as $id => $product)
{
    $product->asXml($id.'.xml');
}

您可以使用simplexml_load_string代替simplexml_load_file

$xml = simplexml_load_string($products);

注意:必须是SimpleXMLElement

答案 1 :(得分:0)

使用XMLReaderIterator

切换到XMLReader

并使用说明here.

非常好的实施,感谢hakre建设,工作真棒。