【问题标题】:How can i get to xml attribute of <yt:accesscontrol>?如何获取 <yt:accesscontrol> 的 xml 属性?
【发布时间】:2012-09-12 08:18:49
【问题描述】:

我不知道如何使用 PHP simplexml_load_file 解析此 xml 中的 permission="allowed" 值。

基本结构是

<?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 属性的值?

【问题讨论】:

    标签: php xml youtube simplexml xml-namespaces


    【解决方案1】:

    您想使用 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');
    

    【讨论】:

      【解决方案2】:

      这太烦人了……

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

      我可以通过以下方式访问权限属性:

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

      【讨论】:

      猜你喜欢
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多