Как я могу получить доступ ко всем <a:article>
в <f:articles>
?
Мне кажется, что simpleXML выглядит немного неуклюже при работе с пространствами имен (но, опять же, я не PHPкодировщик).Вы можете использовать метод children
, но, на мой взгляд, использовать XPath проще.
$feed->registerXPathNamespace('f', 'http://www.bbgo.de/feedxml/feed');
$feed->registerXPathNamespace('a', 'http://www.bbgo.de/feedxml/article');
$article = feed->xpath("/f:feed/f:articles/a:article");
Сначала вам нужно зарегистрировать пространства имен с некоторыми префиксами (префиксы не должны совпадать с теми, которые используются в XMLдокумент, но URI пространства имен должны совпадать), а затем используйте эти префиксы в выражении XPath, которое выбирает цель.Без префиксов имени элемента выражение XPath будет искать элементы, которые не находятся ни в одном пространстве имен.
Почему массив $ feed не создается?
Трудно угадатьпричина для этого.Некоторые вещи, которые вы можете проверить:
- - это строка
$xml
правильно сформированного XML-документа - создает SimpleXMLElement с явным строковым параметром и работает
$feed = new SimpleXMLElement('<root><child/></root>');
- можете ли вы загрузить документ, используя
simplexml_load_file($yourXMLfile);
или simplexml_load_string($yourXMLstring);