Fatal error: Call to a member function xpath()

[censored]

Guest
Fatal error: Call to a member function xpath()

Пробую изучить данную тему.
Не получается простейшая вещь...

Ошибка:
Fatal error: Call to a member function xpath() on a non-object in C:\Program Files\Apache Group\Apache2\htdocs\test.php on line 40

Код:
PHP:
<?
if (file_exists('test.xml')) {
   $xmlstr = simplexml_load_file('test.xml');
 
   var_dump($xmlstr);
} else {
   exit('Failed to open test.xml.');
}

$xml = simplexml_load_string($xmlstr);

foreach ($xml->xpath('//character') as $character) {
   echo $character->name, ' played by ', $character->actor, '<br />';
}


?>
в файле test.xml:
<movies>
<movie>
<title>PHP: Behind the Parser</title>
<characters>
<character>
<name>Ms. Coder</name>
<actor>Onlivia Actora</actor>
</character>
<character>
<name>Mr. Coder</name>
<actor>El Act&#211;r</actor>
</character>
</characters>
<plot>
So, this language. It's like, a programming language. Or is it a
scripting language? All is revealed in this thrilling horror spoof
of a documentary.
</plot>
<rating type="thumbs">7</rating>
<rating type="stars">5</rating>
</movie>
</movies>

Причём всё будет работать, если непосредственно в код вставить :
PHP:
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<movies>
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
   <name>Ms. Coder</name>
   <actor>Onlivia Actora</actor>
   </character>
   <character>
   <name>Mr. Coder</name>
   <actor>El Act&#211;r</actor>
   </character>
  </characters>
  <plot>
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  </plot>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
</movies>
XML;
Помогите пжл..

-~{}~ 28.02.05 15:45:

И ещё в догонку..
не работает

PHP:
$sxe = simplexml_load_file("test.xml"); 
foreach($sxe->root->dbo.VArhiv  as $item) { 
    print $item->name."\n"; 
}
Ругает строку foreach($sxe->root->dbo.VArhiv as $item) {
такими словами Warning: Invalid argument supplied for foreach() in C:\Program Files\Apache Group\Apache2\htdocs\test.php on line 6

test.xml имеет следующую структуру.
- <root>
- <dbo.VArhiv>
<name>1</name>
</dbo.VArhiv>
</root>

Как исправить не подскажите?
 

[DAN]

Старожил PHPClub
>Помогите пжл..
Помогаем.
PHP:
$xmlstr = simplexml_load_file('test.xml');
<- $xmlstr тут является объектом а не строкой.
Поэтому строка
PHP:
$xml = simplexml_load_string($xmlstr);
абсолютно не нужна.
Рекомендация: читать ман по SimpleXML.

>Как исправить не подскажите?
Подсказываем.
Либо у тебя нет таких потомков в xml-документе, либо используй while, т.к. с foreach возникали(ют) некоторые проблемы.
О них, кстати, сможешь и на этом форуме почитать. Тема поднималась.
 
Сверху