SimpleXML的不断CDATA元素在返回的内容

所以另一个CDATA返回内容的问题。 我见过很多答案,但即使我尝试所有这些,我仍然只得到内容。

在更多的细节:

我有一个XML文件(包含许多NewsItem内):

<NewsML> <NewsItem> <NewsComponent> <ContentItem> <DataContent> <body> <body.content> <![CDATA[<p>This is what I am trying to retrieve</p>]]> </body.content> </body> </DataContent> </ContentItem> </NewsComponent> </NewsItem>

我试图让body.content的内容。

这里是我的代码:

$xml = simplexml_load_file('path/to/my/xml.xml',null,LIBXML_NOCDATA); if(count($xml->children()) > 0){ foreach($xml->children() as $element){ $description = (string)$element->NewsComponent->ContentItem->DataContent->body->body.content; echo $description; } } echo '<pre>'; print_r($xml); echo '</pre>';

我的回应返回:内容

即使我看到在我的XML的print_r的内容,我们可以在这里看到:

SimpleXMLElement Object ( [NewsItem] => Array ( [0] => SimpleXMLElement Object ( [NewsComponent] => SimpleXMLElement Object ( [ContentItem] => Array ( [0] => SimpleXMLElement Object ( [DataContent] => SimpleXMLElement Object ( [body] => SimpleXMLElement Object ( [body.content] => This is what I am trying to retieve ) ) ) ) ) )

我尝试使用(字符串)或不元素。

我使用也尝试

$xml = simplexml_load_file('path/to/my/xml.xml',null,LIBXML_NOCDATA); vs $xml = simplexml_load_file('path/to/my/xml.xml',"SimpleXMLElement",LIBXML_NOCDATA); vs $xml = simplexml_load_file('path/to/my/xml.xml');

--------------解决方案-------------

对于不能PHP标识符(如元素名称body.content ),您必须使用另一种PHP符号:

$element->NewsComponent->ContentItem->DataContent->body->{'body.content'};

我想你的榜样返回'内容',因为你是串联一个不存在的元素

$element->NewsComponent->ContentItem->DataContent->body->body

以字符串'内容' - 可能PHP抱怨,有没有不变的名称内容,因此,假设你的意思是“内容”。

因此,我的猜测是,你需要找到另一种方式来选择在名称中一个圆点的元素。

(此问题不会出现可能与CDATA)。

分类:php 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.496 (s). 10 q(s)