Вышеупомянутое «исправление» будет работать, но совершенно не нужно.
Объекты SimpleXML содержат много «волшебства» и не предназначены для просмотра с использованием print_r
; CDATA находится в безопасности в вашем объекте, но не появится, если вы не попросите его правильно.
Если вы запустите echo (string)$movies->channel->title;
, вы должны получить «Forbes.com: Новости», как и следовало ожидать.
Обратите внимание на (string)
, который говорит PHP явно преобразовывать «волшебный» SimpleXMLElement в строку. Если вы этого не сделаете, вы на самом деле получите еще один объект SimpleXMLElement - иначе мой пример не сработает, потому что $ movies-> channel будет строкой.
Рекомендуется всегда использовать (строку) при доступе к элементам или атрибутам из SimpleXML , так как некоторые функции будут задыхаться, если они ожидают строку, и вместо этого вы даете им объект SimpleXML, а также сериализацию или сеанс хранение, конечно, не удастся.