Помогите с XPath!

  • Автор темы forester
  • Дата начала

forester

Guest
Помогите с XPath!

Пробую общеизвестный пример, предлженный в статье "SAX, DOM - краткое введение".
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>

PHP:
$news = array();
$xml = join('',file('news.xml'));
$xml = xmldoc($xml);
$xml->xpath_init();
$ctx = xpath_new_context($xml);
$nodes = xpath_eval($ctx,'//news');

foreach($nodes->nodeset as $node)
{

$currentNews = array();
$currentNews['date'] = $node->get_attribute('date');
$content = $node->children();
foreach($content as $contentNode)
{
if (($contentNode->type == XML_ELEMENT_NODE) && (in_array($contentNode->name, array('title','text'))))
$currentNews[$contentNode->name] = $contentNode->content;
};

$news[] = $currentNews;
};

print_r($news);


Результат:
Notice: Undefined property: name in z:\home\localhost\www\xml\index_xpath.php on line 33
Array ( [0] => Array ( [date] => 1.1.2002 ) [1] => Array ( [date] => 5.1.2002 ) [2] => Array ( [date] => 10.1.2002 ) )


Пробовал вывети перед строкой
$currentNews[$contentNode->name] = $contentNode->content;

echo '$contentNode->name='.$contentNode->name.'<br>$contentNode->content='.$contentNode->content;

Результат тот же.
 
Сверху