2012-09-20 47 views
0

我無法弄清楚或找出如何使用PHP simplexml_load_file解析此xml中的permission="allowed"值。如何獲得<yt:accesscontrol>的xml屬性?

的基本結構是

<?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" gd:etag="W/&quot;DkEDSH47eCp7I2A9WhJbEEQ.&quot;"> 
<yt:accessControl action="comment" permission="allowed" /> 
<yt:accessControl action="commentVote" permission="allowed" /> 
<yt:accessControl action="videoRespond" permission="moderated" /> 
<yt:accessControl action="rate" permission="allowed" /> 
<yt:accessControl action="embed" permission="allowed" /> 
<yt:accessControl action="list" permission="allowed" /> 
<yt:accessControl action="autoPlay" permission="allowed" /> 
<yt:accessControl action="syndicate" permission="allowed" /> 

怎樣才能到permission=allowed屬性上最後一行的價值?

回答

0

這是如此惱人找出...

(其中$xml = simplexml_load_file($source);

我可以通過以下方式獲得權限屬性:

$xml->children('http://gdata.youtube.com/schemas/2007')->accessControl[4]->attributes()->permission; 
+0

我認爲這只是爲了瞭解XML中有名稱空間,並且SimpleXMLElement支持這些。另一種獲得這些方法的方法是在你調用'simplexml_load_file'時指定命名空間,參見[*關於什麼是$ ns和$ is_prefix參數?](http://stackoverflow.com/q/ 17258883/367456)以及[* SimpleDML *中的getDocNamespaces和getNamespaces之間的區別](http://stackoverflow.com/q/18351002/367456)。 – hakre

2

您想使用XPath來檢索記錄,它是一種XML查詢語言。

請參閱SimpleXMLElement's xpath()registerXPathNamespace()方法。 W3Schools解釋XPath's syntax here

對於這個XML

$xml = <<<EOD 
<book xmlns:chap="http://example.org/chapter-title"> 
    <title>My Book</title> 
</book> 
EOD; 

你這樣註冊一個命名空間:

$sxe = new SimpleXMLElement($xml); 
$sxe->registerXPathNamespace('c', 'http://example.org/chapter-title'); 
$result = $sxe->xpath('//c:title');