我有一个电子商务网站,需要通过从分销商通过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个产品的单独文件并保存?
您可以使用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
使用XMLReaderIterator 切换到XMLReader
并使用了此处的说明。
非常好的实现,感谢hakre的构建,非常棒。