Ответов: 2 Просмотров: 2323
|
Здравствуйте!
Разбираю XML для импорта в базу myscl.
CODE ( html):
скопировать код в буфер обмена
<offer type="vendor.model" id="330784" available="true"> <url>http://pay.ru/click/</url> <price>2890.00</price> <currencyId>RUB</currencyId> <categoryId>451</categoryId> <picture>http://ato.ru/upload/iblock/080/750x1000_ut000011040_1.jpg</picture> </offer>
С помощью кода ниже всё делалось замечательно.
PHP:
скопировать код в буфер обмена
<?PHP $file = "yml.xml"; header('Content-type: text/html; charset=utf-8'); require_once ('connect.php'); $state=''; $sub_state=''; while ($data = fread($fp, 4096 )) { } function startElement($parser, $name, $attrs) { global $state; global $sub_state; if ($name=='OFFER') { $state='offer'; $sub_state=''; return; } if ($state=='offer') { $sub_state=$name; } else { $sub_state=''; } } function endElement($parser, $name) { global $arr_item; if ($name=='OFFER') { $state=''; { process_item(); } } } function characterData($parser, $data) { global $sub_state; global $arr_item; if (in_array($sub_state, array('URL', 'PRICE', 'CURRENCYID', 'CATEGORYID', 'PICTURE', 'TYPEPREFIX', 'VENDOR', 'MODEL'))) { { $arr_item[$sub_state].=$data; } } } function _str($s) { } function process_item() { global $arr_item; $sql="insert into jos_sap (url, price, currencyId, categoryId, picture, typePrefix, vendor, model, date_add, update_date) values ('"._str($arr_item['URL'])."', '"._str($arr_item['PRICE'])."', '"._str($arr_item['CURRENCYID'])."', '"._str($arr_item['CATEGORYID'])."', '"._str($arr_item['PICTURE'])."', '"._str($arr_item['TYPEPREFIX'])."', '"._str($arr_item['VENDOR'])."', '"._str($arr_item['MODEL'])."', NOW(), NOW())"; } ?>
С недавних пор XML изменился на следующий.
CODE ( html):
скопировать код в буфер обмена
<offer type="vendor.model" id="330784" available="true"> <url>http://pay.ru/click/</url> <price>2890.00</price> <currencyId>RUB</currencyId> <categoryId>451</categoryId> <picture>http://ato.ru/upload/iblock/080/750x1000_ut000011040_1.jpg</picture> <picture>http://ato.ru/upload/iblock/23f/750x1000_ut000011040_2.jpg</picture> <picture>http://ato.ru/upload/iblock/0f7/750x1000_ut000011040_3.jpg</picture> <picture>http://ato.ru/upload/iblock/cb0/750x1000_ut000011040_4.jpg</picture> <picture>http://ato.ru/upload/iblock/a4a/750x1000_ut000011040_5.jpg</picture> <picture>http://ato.ru/upload/iblock/824/750x1000_ut000011040_6.jpg</picture> <picture>http://ato.ru/upload/iblock/772/750x1000_ut000011040_7.jpg</picture> </offer>
Все <picture> пишутся в одну ячейку таблицы, что правильно с точки зрения кода, но совершенно не совпадает с поставленной задачей. Сам в PHP не разбираюсь никак, поэтому сильно прошу помочь в изменении кода, чтобы все <picture> писались в свои ячейки базы данных, либо подскажите в какую сторону копать и что надо в коде менять. |