Элемент XML содержит элементы не xml (не упакован в cdata) - PullRequest
2 голосов
/ 12 апреля 2011

Я использую простой 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 variable

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

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

1 Ответ

2 голосов
/ 12 апреля 2011

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

См. http://php.net/simplexmlelement.asxml

...