XML элемент содержит не xml элементы (не завернутые в cdata)

#php #xml #simplexml

#php #xml #simplexml

Вопрос:

Я использую простой xml для php и пытаюсь проанализировать <content> элемент, который является частью следующего дерева:

<entry>

<title>

<link>

<summary>

<content>

Проблема в том, что <content> элемент не может быть прочитан как строка, потому что он содержит «нестроковое» содержимое, которое не завернуто в CDATA:

 <content type="xhtml" xml:lang="en-US" xml:base="...">
<div xmlns="http://www.w3.org/1999/xhtml"><p><strong>text... text...</strong> text <a     href="..." 
target="_self">LINK</a>. text</p>
</content>
  

Я использую следующий код:

 $xml = simplexml_load_file($feed_uri);
  

и затем:

 foreach($xml->entry as $entry){
$item = new RSSItem();
$item->title = (string) $entry->title;
$item->content = (string)$entry->content;
$item->date = (string) $entry->published;
  

Мой элемент содержимого var пуст. Остальные, как и ожидалось
Если я изменю $item-> content = (string)$entry-> content; на $item->content = $entry->content; тогда я получу другой объект, вложенный в переменную $item-> content

Любой ide, как заставить анализатор не интерпретировать элементы, найденные в элементе содержимого (div, p и т.д.), Как вложенные элементы?

Заранее спасибо, L

Ответ №1:

Попробуйте $entry->content->asXML() .

Смотрите http://php.net/simplexmlelement.asxml

Комментарии:

1. Я люблю тебя!!! :)))) Спасибо… Это работает, и теперь я пытаюсь понять этот волшебный метод…