#php #mysql #xml #parsing #simplexml
#php #mysql #xml #синтаксический анализ #simplexml
Вопрос:
пожалуйста, мне нужно проанализировать XML-файл с информацией об автомобилях. Я сделал все в cars, photos, но мне нужно, чтобы в дополнительной таблице был идентификатор, внешний ключ к идентификатору для таблицы cars, и у всех автомобилей есть случайный идентификатор equipment_id.
Мне нужно занести это в таблицу «оборудование»:
<equipment>
<equipment_id>eq_co_driver_airbag</equipment_id>
<equipment_id>eq_driver_airbag</equipment_id>
<equipment_id>eq_abs</equipment_id>
<equipment_id>eq_aut_aircon</equipment_id>
<equipment_id>eq_dalk_centr</equipment_id>
<equipment_id>eq_el_contr_win</equipment_id>
<equipment_id>eq_el_contr_mirrors</equipment_id>
<equipment_id>eq_lite_disky</equipment_id>
<equipment_id>eq_immobilizer</equipment_id>
<equipment_id>eq_mlhovky</equipment_id>
<equipment_id>eq_adjustable_drive_wheel</equipment_id>
<equipment_id>eq_original_autoradio</equipment_id>
<equipment_id>eq_on_board_comp</equipment_id>
<equipment_id>eq_steering_booster</equipment_id>
<equipment_id>eq_leather_trim</equipment_id>
<equipment_id>eq_ASR</equipment_id>
<equipment_id>eq_stresni_sibr_el</equipment_id>
<equipment_id>eq_ton_skla</equipment_id>
<equipment_id>eq_venkovni_teplomer</equipment_id>
<equipment_id>eq_adjustable_seat</equipment_id>
</equipment>
Я не могу создать правильный сценарий импорта.
Вот одна машина из моего XML-файла: http://pastebin.com/Yyr1GXyb
И вот список одного автомобиля через print_r: http://pastebin.com/csQpQSDs
Я попробовал это:
echo "import equipment .. ";
foreach ($xml->cars->car->equipment as $data) {
mysql_query("INSERT INTO equipment (cars_id, equipment_id)
VALUES
($id_car, "$data->equipment_id")")
or die(mysql_error());
$id_car ;
}
echo "OKn";
и это
echo "import equipment .. ";
foreach ($xml->cars->car as $entry) {
foreach ($entry->equipment as $data) {
mysql_query("INSERT INTO equipment (cars_id, equipment_id)
VALUES
($id_car, "$data->equipment_id")")
or die(mysql_error());
}
$id_car ;
}
echo "OKn";
но безуспешно
Я не могу понять. Пожалуйста, помогите мне. Большое вам спасибо!
Комментарии:
1. Вместо этого используйте DOMDocument, что упрощает работу
2. Это невозможно с помощью SimpleXML? Хотите использовать SimpleXML, я думаю, это возможно. Я не знаю, как использовать DOMDocument для этого действия
Ответ №1:
Решено!
echo "import equipment .. ";
foreach ($xml->cars->car as $entry) {
foreach ($entry->children()->equipment->equipment_id as $data) {
mysql_query("INSERT INTO equipment (cars_id, equipment_id)
VALUES
($id_car, "$data")")
or die(mysql_error());
}
$id_car ;
}
echo "OKn";
Комментарии:
1. Вы должны собрать кучу строк для вставки, а затем запустить запрос. Не для одной строки. Еще лучше использовать подготовленные инструкции для перекачки данных в БД. Смотрите mysqli .
2. Или, что еще лучше, напрямую конвертируйте XML через Mysql. dev.mysql.com/doc/refman/5.5/en/load-xml.html