У меня есть XML-файл с некоторыми данными. Мне нужно положить в таблицу данных SQL из этого файла, но только из указанных тегов в качестве отдельной записи MySQL.
Это пример данных XML
<entry>
<published>2014-12-24T00:03:00.002-08:00</published>
<updated>2014-12-24T00:04:26.884-08:00</updated>
<title type='text'>Article title</title>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#kind'/>
<content type='html'>Here content data</content>
<author>
<name>Author name</name>
<uri>http://www.example.com</uri>
<email>[email protected]</email>
</author>
<thr:total>0</thr:total>
</entry>
Теперь я хочу взять данные из этих тегов и поместить в таблицу SQL в качестве отдельной записи.
В MySQL я получил таблицу со столбцами «date», «title» и «content», и только из этих тегов мне нужно поместить данные в mysql.
Мне просто нужно знать, как импортировать данные из XML и использовать в PHP. Ничего более.
Пожалуйста, поделитесь некоторыми советами для меня.
Вы можете использовать функцию xml_parse_into_struct (), которая будет анализировать данные из вашего XML-документа в пригодный для использования массив PHP.
<?php
$xmlfile = 'test.xml';
$xmlparser = xml_parser_create();
$fp = fopen($xmlfile, 'r');
$xmldata = fread($fp, 4096);
xml_parse_into_struct($xmlparser,$xmldata,$values);
xml_parser_free($xmlparser);
print_r($values);
?>
Вам нужно будет изменить код для ваших конкретных потребностей.
Источник: http://www.w3schools.com/php/func_xml_parse_into_struct.asp
Это правильный код для того, что мне нужно.
<?php
$xmlurl = 'file.xml';
$dom = new DOMDocument();
$dom->load($xmlurl);
$records = $dom->getElementsByTagName('entry');
foreach($records as $record) {
$dates = $record-> getElementsByTagName('published');
$date = $dates->item(0)->nodeValue;
$date = strtotime($date);
$titles = $record-> getElementsByTagName('title');
$title = $titles->item(0)->nodeValue;
$contents = $record-> getElementsByTagName('content');
$content = $descs->item(0)->nodeValue;
safe_query('INSERT INTO article (date,title,content) VALUES ("'.$date.'","'.$title.'","'.$content.'")');
}
?>