Помогите написать парсер XML прайс-листа в MySQL
Вот структура XML:
Код:
<disk>
<code>1000068</code>
<brand>YOKATTA</brand>
<model>Model Forged-501</model>
<name>
YOKATTA Model Forged-501 6.5x16/5x112 ET33 D57.1 BK
</name>
<color>bk</color>
<width>6.5</width>
<diametr>16</diametr>
<bolts_count>5</bolts_count>
<bolts_spacing>112</bolts_spacing>
<et>33</et>
<dia>57.1</dia>
<price>7238.00</price>
<price_recomend_opt>7238.00</price_recomend_opt>
<price_recomend_rozn>8008.00</price_recomend_rozn>
<weight>8.00</weight>
<volume>0.05</volume>
<picture>
http://photo.yst.ru/wheels/yokatta/model forged-501_bk.png
</picture>
<restyar>3</restyar>
<restspb>0</restspb>
<restekb>0</restekb>
<restrnd>0</restrnd>
<restmsk>0</restmsk>
<comments/>
<article>1000068</article>
</disk>
Написал парсер, но он не работает, выдает ошибки Warning: simplexml_load_file() [function.simplexml-load-file]:
http://terminal.yst.ru/api/xml/disk/...9a8fd2d522e:1: parser error : Start tag expected, '<' not found in /var/www/www-root/data/www/shinacar.ru/pricedisk1.php on line 17
Warning: simplexml_load_file() [function.simplexml-load-file]: [{"code":1000068,"brand":"YOKATTA"," model":"Model Forged-501","name":"YOKATTA Mo in /var/www/www-root/data/www/shinacar.ru/pricedisk1.php on line 17
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /var/www/www-root/data/www/shinacar.ru/pricedisk1.php on line 17
Notice: Trying to get property of non-object in /var/www/www-root/data/www/shinacar.ru/pricedisk1.php on line 21
Вот сам парсер
Код:
<?php
mysql_pconnect("localhost","логин","пароль");
mysql_select_db("имя базы");
mysql_query("SET NAMES utf8");
/* функция дебага массивов */
function arr($arr){
echo '<pre>';
print_r($arr);
echo '</pre>';
}
$file = 'http://terminal.yst.ru/api/xml/disk/b12cd8d7-7c96-43d0-8180-09a8fd2d522e'; // файл XML
$read = simplexml_load_file($file); // получаем объект класса
//arr($read); // распечатываем массив $read
$xml = $read->block; // $xml - объект-массив, вложенные теги - его свойства
$count = count($xml); // кол-во элементов массива
for($i = 0; $i < $count; $i++){
echo "<p>Ряд для таблицы с id - {$i}</p>";
echo $xml[$i]->code. '<br />'; //
echo $xml[$i]->brand. '<br />'; //
echo $xml[$i]->model. '<br />'; //
echo $xml[$i]->width. '<br />'; //
echo $xml[$i]->diametr. '<br />';
echo $xml[$i]->bolts_count. '<br />';
echo $xml[$i]->bolts_spacing. '<br />';
echo $xml[$i]->et. '<br />';
echo $xml[$i]->dia. '<br />';
echo $xml[$i]->price. '<br />';
echo $xml[$i]->price_recomend_opt. '<br />';
echo $xml[$i]->price_recomend_rozn. '<br />';
echo $xml[$i]->weight. '<br />';
echo $xml[$i]->volume. '<br />';
echo $xml[$i]->picture. '<br />';
echo $xml[$i]->restyar. '<br />';
echo $xml[$i]->restspb. '<br />';
echo $xml[$i]->restekb. '<br />';
echo $xml[$i]->restrnd. '<br />';
echo $xml[$i]->restmsk. '<br />';
echo $xml[$i]->comments. '<br />';
echo $xml[$i]->article. '<br />';
/* можно поместить в привычные переменные */
$code_xml = $xml[$i]->code;
$brand_xml = $xml[$i]->brand;
$model_xml = $xml[$i]->model;
$color_xml = $xml[$i]->color;
$width_xml = $xml[$i]->width;
$diametr_xml = $xml[$i]->diametr;
$bolts_count_xml = $xml[$i]->bolts_count;
$bolts_spacing_xml = $xml[$i]->bolts_spacing;
$et_xml = $xml[$i]->et;
$dia_xml = $xml[$i]->dia;
$price_xml = $xml[$i]->price;
$price_recomend_opt_xml = $xml[$i]->price_recomend_opt;
$price_recomend_rozn_xml = $xml[$i]->price_recomend_rozn;
$weight_xml = $xml[$i]->weight;
$volume_xml = $xml[$i]->volume;
$picture_xml = $xml[$i]->picture;
$restyar_xml = $xml[$i]->restyar;
$restspb_xml = $xml[$i]->restspb;
$restekb_xml = $xml[$i]->restekb;
$restrnd_xml = $xml[$i]->restrnd;
$restmsk_xml = $xml[$i]->restmsk;
$comments_xml = $xml[$i]->comments;
$article_xml = $xml[$i]->article;
/* заносим данные в БД */
$res = mysql_query("INSERT INTO `productdisk` SET
`code_xml`='{$code_xml}',
`brand_xml`='{$brand_xml}',
`title_xml`='{$title_xml}',
`model_xml`='{$model_xml}',
`color_xml`='{$color_xml}',
`width_xml`='{$width_xml}',
`diametr_xml`='{$diametr_xml}',
`bolts_count_xml`='{$link_xml}',
`bolts_spacing_xml`='{$link_xml}',
`et_xml`='{$link_xml}',
`dia_xml`='{$link_xml}',
`price_xml`='{$link_xml}',
`price_recomend_opt_xml_xml`='{$link_xml}',
`price_recomend_rozn_xml`='{$link_xml}',
`weight_xml`='{$weight_xml}',
`volume_xml`='{$volume_xml}',
`picture_xml`='{$picture_xml}',
`restyar_xml`='{$restyar_xml}',
`restspb_xml`='{$restspb_xml}',
`restekb_xml`='{$restekb_xml}',
`restrnd_xml`='{$restrnd_xml}',
`restmsk_xml`='{$restmsk_xml}',
`comments_xml`='{$comments_xml}',
`article_xml`='{$article_xml}'");
}
?>
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.