Php 使用SimpleXML获取XML属性
我正在尝试获取Php 使用SimpleXML获取XML属性,php,simplexml,youtube-api,Php,Simplexml,Youtube Api,我正在尝试获取$xml->entry->yt:statistics->attributes()->viewCount属性,我尝试了一些SimpleXML的东西,但我真的无法让它工作 尝试#1 entry[0]->yt:statistics['viewCount']; ?> 尝试#2 entry[0]->yt:statistics->attributes()->viewCount; ?> 这两个都返回空白,虽然SimpleXML正在工作,但我尝试获取提要的标题,这很有效 有什么想法吗 我看过S
$xml->entry->yt:statistics->attributes()->viewCount
属性,我尝试了一些SimpleXML的东西,但我真的无法让它工作
尝试#1
entry[0]->yt:statistics['viewCount'];
?>
尝试#2
entry[0]->yt:statistics->attributes()->viewCount;
?>
这两个都返回空白,虽然SimpleXML正在工作,但我尝试获取提要的标题,这很有效
有什么想法吗
我看过SO和其他网站上的大量其他示例,但不知何故,这不起作用?PHP是否认识到“:”是一个截止线,或者我只是在做一些愚蠢的事情
谢谢,非常感谢您的回复 如果您只想获取youtube视频的viewcount,则必须指定视频ID。youtube ID可在每个视频url中找到。例如“http://www.youtube.com/watch?v=ccI-所以id是ccI MugndOU。要获取viewcount,请尝试下面的代码
$sample_video_ID = "ccI-MugndOU";
$JSON = file_get_contents("http://gdata.youtube.com/feeds/api/videos?q={$sample_video_ID}&alt=json");
$JSON_Data = json_decode($JSON);
$views = $JSON_Data->{'feed'}->{'entry'}[0]->{'yt$statistics'}->{'viewCount'};
echo $views;
我将使用来自zend框架的。也可以作为单独的模块使用,因此不需要使用整个zend。前缀将该元素标记为与文档其余部分不同的“XML名称空间”。您必须告诉SimpleXML使用
->children()
方法切换到该名称空间
您尝试的线条实际上应该如下所示:
echo (string)$xml->entry[0]->children('yt', true)->statistics->attributes(NULL)->viewCount;
要分解这一点:
-这只是一个好习惯:您需要属性的字符串内容,而不是表示它的SimpleXML对象(string)
-如预期$xml->条目[0]
-切换到本地别名为'yt'的命名空间->children('yt',true)
-如预期->统计数据
-从技术上讲,属性“viewCount”返回默认名称空间,因为它没有前缀“yt:”,所以我们必须切换回才能看到它->attributes(NULL)
-运行->viewCount
只会给我们提供属性,可以使用->attributes()
而不是->foo
['foo']
yt:statistics
是一个PHP语法错误。不能在SimpleXML中使用它,也不能在其他任何地方使用它。SimpleXML对XML名称空间的支持充其量是不稳定的。您应该改用DOMDocument和DOMXPath。开始阅读。@Tomalak与SimpleXML的许多内容一样,名称空间支持工作得非常好,但文档记录得很差,因此理解得也很差。感谢您的回答:)它帮助我认识到YouTube也有JSON api,这更容易操作!再次感谢!感谢您的回复:-)我的主机不喜欢组件,安装这些组件很痛苦:-(但无论如何,谢谢!您不必在服务器上安装任何东西。请检查此链接。
$sample_video_ID = "ccI-MugndOU";
$JSON = file_get_contents("http://gdata.youtube.com/feeds/api/videos?q={$sample_video_ID}&alt=json");
$JSON_Data = json_decode($JSON);
$views = $JSON_Data->{'feed'}->{'entry'}[0]->{'yt$statistics'}->{'viewCount'};
echo $views;
echo (string)$xml->entry[0]->children('yt', true)->statistics->attributes(NULL)->viewCount;