quazare
Новичок
чтение xml-rss файла в массив
Возникла небольшая проблемка: нужно записать содержание xml-rss файл в массив PHP:
Имеется следующая модель чтения:
1.Созданы 2 класса:
чтение происходит следующим образом:
xml-rss файл представляет собой такую структуру:
Подскажите как грамотно записать содержание файла в двухмерный массив типа (дата, сообщение).
Спасибо.
Возникла небольшая проблемка: нужно записать содержание xml-rss файл в массив PHP:
Имеется следующая модель чтения:
1.Созданы 2 класса:
Код:
class pc_RSS_item {
var $data = '';
var $soobshenie = '';
function display() {
printf('<span class=losmas>%s</span><br><span class=txt_desc3>%s</span><br><br>',htmlspecialchars($this->data), htmlspecialchars($this->soobshenie));
}
}
class pc_RSS_parser {
var $tag;
var $item;
function start_element($parser, $tag, $attributes) {
if ('news' == $tag) {
$this->item = new pc_RSS_item;
} elseif (!empty($this->item)) {
$this->tag = $tag;
}
}
function end_element($parser, $tag) {
if ('news' == $tag) {
$this->item->display();
unset($this->item);
}
}
function character_data($parser, $data) {
if (!empty($this->item)) {
if (isset($this->item->{$this->tag})) {
$this->item->{$this->tag} .= trim($data);
}
}
}
}
Код:
$xml = xml_parser_create();
$rss = new pc_RSS_parser;
xml_set_object($xml, $rss);
xml_set_element_handler($xml, 'start_element', 'end_element');
xml_set_character_data_handler($xml, 'character_data');
xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, false);
$feed = 'data.xml';
$fp = fopen($feed, 'r') or die("Can't read RSS data.");
while ($data = fread($fp, 4096)) {
xml_parse($xml, $data, feof($fp)) or die("Can't parse RSS data");
}
fclose($fp);
xml_parser_free($xml);
Код:
<?xml version="1.0"?>
<rss version="0.93">
<news>
<data>28 октября 2006</data>
<soobshenie>Сообщение 1</soobshenie>
</news>
<news>
<data>27 октября 2006</data>
<soobshenie>Сообщение 2</soobshenie>
</news>
</rss>
Спасибо.