Я работаю над этим проектом, который в основном считывает данные из XML-файла и вставляет / обновляет данные в базу данных mysql.
Вот пример файла sample.xml:
<table name="movies"> <column name="movie_name">Titanic</column> <column name="dvd">40</column> <column name="blueray">5</column> <column name="netflix">4</column> <column name="amazon">3</column> </table>
Я разбиваю проблему на: 1) Получают значения из файла XML. 2) Вставьте извлеченные значения в базу данных mysql.
Я могу работать над вставкой значений в базу данных, но сложная часть получает значения из xml, что делает меня сумасшедшим.
Вот моя таблица базы данных выглядит так:
Название базы данных: Фильмы Столбцы: имя фильма, dvd, blueray, netflix, amazon
Вот код, который я пытался извлечь значения атрибута из xml.
<?php $source = 'sample.xml'; // load as string $xml = new SimpleXMLElement($source,null,true); $movie_name= $xml->column->attributes()->name; echo $movie_name. "\n"; ?>
Результат: вместо получения названия фильма «Титаник», я получаю «имя фильма».
Вы можете использовать этот запрос:
<?php $source = 'sample.xml'; // load as string $xml = new SimpleXMLElement($source,null,true); $movie_name= $xml->column->attributes()->name; //echo $movie_name. "\n"; $table = $xml->attributes()->name; $columns =""; foreach($xml as $column){ $columns .= (string)$column->attributes()->name .","; } $columns = rtrim($columns, ","); $values =""; foreach($xml->column as $value){ $values .= $value ."," ; } $values = rtrim($values, ","); $query = " INSERTO INTO $table ( $columns ) VALUES ( $values ) "; echo $query; ?>
Вы возвращаетесь именно к тому, что вы просили. attributes () смотрит на атрибуты, имя дает вам имя атрибута. Вы можете получить имя, сделав это
$movieName = (string)$xml->column;
Если вы хотите все значения, вы можете прокручивать столбцы
foreach($xml->column as $xColumn) { $value = (string)$xColumn; }
значение атрибута name IS movie_name. Titanic – это значение элемента Column, у которого есть атрибут name со значением.