使用SimpleXML PHP访问XML中的名称空间冒号节点 [英] Accessing namespace colon nodes in XML with SimpleXML PHP
本文介绍了使用SimpleXML PHP访问XML中的名称空间冒号节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这与我发布的问题类似,但是我已经拓宽了范围,因为它必须可以解决.
This is similar to a question I've posted, but I've broadened out as this has got to be solvable.
我正在尝试从此rss提要中访问分级和viewCount.现在,这些文件使用yt:和gd:命名空间-但是,命名空间引用是来自YouTube提要的404引用,因此似乎失败了.请帮忙吗?
I am trying to access rating and viewCount from this rss feed. Now, these are namespaced with yt: and gd: - however the namespace references are 404's from youtube's feed so it seems to be failing. Any help please, please?
我正在尝试使用:-
$ytFeed->children('http://gdata.youtube.com/schemas/2007')->statistics->attributes('viewCount'));
但是失败了...它的工作正常,例如,我可以使用
But it fails... It does work like that normally, for instance I CAN access media: with
$ytFeed->children('http://search.yahoo.com/mrss/')->group->category);
这是原始的RSS,请在这些节点的底部查看:-
This is the original RSS, look at the bottom for these nodes:-
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007'>
<id>http://gdata.youtube.com/feeds/api/videos/tDJFDsZFw2E</id>
<published>2009-03-02T07:02:49.000Z</published>
<updated>2011-07-19T06:57:29.000Z</updated>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video' />
<category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='Music' label='Music' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='Other Lives' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='Jesse Tabish' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='Jenny Hsu' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='Jupiter Hotel' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='Portland' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='music' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='band' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='interview' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='mf magazine' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='fashion' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='hotel room' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='doug fir lounge' />
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='erik schultz' />
<title type='text'>Other Lives</title>
<content type='text'>We sat down with Jesse Tabish and Jenny Hsu from Other Lives at the Jupiter Hotel in Portland, OR. We love these guys. Check them out at myspace.com/otherlivesVisit mf magazine at musicfashionmagazine.com or myspace.com/musicfashion</content>
<link rel='alternate' type='text/html' href='http://www.youtube.com/watch?v=tDJFDsZFw2E&feature=youtube_gdata' />
<link rel='http://gdata.youtube.com/schemas/2007#video.responses' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/tDJFDsZFw2E/responses' />
<link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/tDJFDsZFw2E/related' />
<link rel='self' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/tDJFDsZFw2E' />
<author>
<name>mfmagazine</name>
<uri>http://gdata.youtube.com/feeds/api/users/mfmagazine</uri>
</author>
<gd:comments>
<gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/tDJFDsZFw2E/comments' countHint='16' />
</gd:comments>
<media:group>
<media:category label='Music' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Music</media:category>
<media:content url='http://www.youtube.com/v/tDJFDsZFw2E?f=videos&app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='600' yt:format='5' />
<media:content url='rtsp://v3.cache3.c.youtube.com/CiILENy73wIaGQlhw0XGDkUytBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='600' yt:format='1' />
<media:content url='rtsp://v6.cache3.c.youtube.com/CiILENy73wIaGQlhw0XGDkUytBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='600' yt:format='6' />
<media:description type='plain'>We sat down with Jesse Tabish and Jenny Hsu from Other Lives at the Jupiter Hotel in Portland, OR. We love these guys. Check them out at myspace.com/otherlivesVisit mf magazine at musicfashionmagazine.com or myspace.com/musicfashion</media:description>
<media:keywords>Other Lives, Jesse Tabish, Jenny Hsu, Jupiter Hotel, Portland, music, band, interview, mf magazine, fashion, hotel room, doug fir lounge, erik schultz</media:keywords>
<media:player url='http://www.youtube.com/watch?v=tDJFDsZFw2E&feature=youtube_gdata_player' />
<media:thumbnail url='http://i.ytimg.com/vi/tDJFDsZFw2E/0.jpg' height='240' width='320' time='00:05:00' />
<media:thumbnail url='http://i.ytimg.com/vi/tDJFDsZFw2E/1.jpg' height='90' width='120' time='00:02:30' />
<media:thumbnail url='http://i.ytimg.com/vi/tDJFDsZFw2E/2.jpg' height='90' width='120' time='00:05:00' />
<media:thumbnail url='http://i.ytimg.com/vi/tDJFDsZFw2E/3.jpg' height='90' width='120' time='00:07:30' />
<media:title type='plain'>Other Lives</media:title>
<yt:duration seconds='600' />
</media:group>
<gd:rating average='5.0' max='5' min='1' numRaters='17' rel='http://schemas.google.com/g/2005#overall' />
<yt:statistics favoriteCount='10' viewCount='3572' />
</entry>
推荐答案
使用 DomDocument 和 DomXpath :
error_reporting(E_ALL ^ E_STRICT);
ini_set('display_errors', 'on');
$dom = new DomDocument;
$dom->load('data.xml');
$xpath = new DomXpath($dom);
$xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
$xpath->registerNamespace('media', 'http://search.yahoo.com/mrss/');
$xpath->registerNamespace('gd', 'http://schemas.google.com/g/2005');
$xpath->registerNamespace('yt', 'http://gdata.youtube.com/schemas/2007');
$favoriteCountAttr = $xpath->query('/atom:entry/yt:statistics/@favoriteCount')->item(0);
if ($favoriteCountAttr instanceof DomAttr) {
echo $favoriteCountAttr->nodeValue; // output: 10
}
这篇关于使用SimpleXML PHP访问XML中的名称空间冒号节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文