Использование Xpath для получения данных из XML с пространством имен - PullRequest
1 голос
/ 13 июня 2011

Я бился головой об кирпичную стену с этим, поэтому был бы очень признателен за помощь. Я впервые использую xpath и выполняю большинство необходимых задач без проблем.

Вот пример фрагмента:

 $urlw = "http://www.wahanda.com/rss/mobdeal.xml";
 $wf = gzopen ($urlw, 'r');
 $wxml = new SimpleXMLElement (fread ($wf, 1000000));

 foreach($wxml->xpath ('/rss/channel/item') as $entry) 
 {
    $price = $entry->price;
    echo $price . "<br/>"; 
 }

Моя проблема в том, что используемый мной фид имеет объявления пространств имен, поэтому узел "цена" на самом деле "w: цена". Некоторые из узлов, которые я хочу использовать, имеют префикс «w:», а другие нет. Мой код не может подобрать содержимое узлов с префиксом. Может кто-нибудь сказать, пожалуйста, как мне обойти это? Из прочтения я добавил следующее:

 $wxml->registerXPathNamespace('w', 'http://www.wahanda.com/ns/1.0');

но все еще не уверен, что мне нужно делать дальше.

Заранее большое спасибо за помощь.

1 Ответ

0 голосов
/ 13 июня 2011

Вы на правильном пути. Все, что вам нужно сделать, это написать запрос xpath с пространством имен. Что-то вроде:

$wxml->xpath ('//w:price')
...