Отправляет email-рассылки с помощью сервиса Sendsay

Проблема с парсингом XML

Приветствую!

Есть пример работы с xml:
<?php
// Массив, в котором будут сохранены новости из XML файла
$news = array();

// Читаем содержимое XML файла в строковую переменную
$xml = join('',file('news.xml'));
// Создаем дерево DOM XML на основе имеющегося у нас XML файла.
// Заметьте, что это заняло у нас всего лишь одну строчку кода!
$xml = xmlDoc($xml);

// Теперь в переменной $xml у нас находится дерево объектов,
// представляющее собой наш XML файл. Для того, чтобы начать
// обход этого дерева - необходимо получить объект родительской node (тега).
// Для нашего XML файла это будет node <newsList>
$root = $xml->root();
// Получаем массив потомков родительской node (в нашем случае это
// массив <news>)
$nodes = $root->children();
// Начинаем обработку каждой node в массиве
foreach($nodes as $node)
{
// Если текущая node - это одна из node <news>, то продолжаем ее обработку,
// чтобы получить информацию об этой новости
if ($node->name=='news')
{
// Создаем новый массив, куда будем собирать иинформацию о текущей новости
$currentNews = array();
// Получаем дату этой новости (она хранится в аттрибуте 'date')
$currentNews['date'] = $node->get_attribute('date');
// Остальная информация хранится во вложенных node <title> и <text>,
// поэтому мы должны взять список вложенных nodes и обработать его.
$content = $node->children();
foreach($content as $contentNode)
{
// Проверяем: если node, которую мы сейчас обрабатываем, является тегом
// (т.е. имеет тип XML_ELEMENT_NODE) и ее имя - одно из тех, которые мы
// ищем - добавляем информацию из этой node в массив с информацией о новости
if (($contentNode->type==XML_ELEMENT_NODE) &&
(in_array($contentNode->name,array('title','text'))))
$currentNews[$contentNode->name] = $contentNode->content;
};
// Сохраняем текущую новость в массиве новостей
$news[] = $currentNews;
};
};

<html>
<head>
<title>Новости</title>
</head>
<body>
<table width="100%" border="1">
<?php
foreach($news as $n)
{

<tr>
<td width="90%"><b><?php echo $n['title']; ?></b></td>
<td><?php echo $n['date']; ?></td>
</tr>
<tr>
<td colspan="2"><?php echo $n['text']; ?><br><br></td>
</tr>
<?php
};

</table>
</body>
</html>
есть сам news.xml
<?xml version="1.0"?>
<newsLine>
<news date="1.1.2002">
<title>title 1</title>
<text>news text 1</text>
</news>
<news date="5.1.2002">
<title>title 2</title>
<text>news text 2</text>
</news>
<news date="10.1.2002">
<title>title 3</title>
<text>news text 3</text>
</news>
</newsLine>
Автор пишет что тестил данный скрипт на hph 4.0

У меня почему-то он не работает.
Стоит php 4.4.4
Сначала причина нератоспособности была в отключенном domxml, и писалась ошибка
"функция xmlDoc() неизвестна"
потом настроил, стала выдаваться нашибка: "Notice: Undefined property: name in
ХХХ on line ХХХ"

В чем проблема не могу понять. Подскажите кто знает.
А тем кто не сталкивался с xml будет полезен этот пример(работающий конечно :)
).

Кстати, если есть у кого скрипт импорта(не путать с экспортом) yml (яндекс.товары)
поделитесь плиз.

С уважением, Евгений.



библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Mon, 25 Dec 2006 22:39:31 +0300 (#624068)