在PHP中检索XML伪类值?

问题描述

| 我正在尝试开发一个包含一些youtube视频的网站。从他们的API检索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\'>
    <id>http://gdata.youtube.com/Feeds/api/videos/4ZsiqqOyWx8</id>
    <published>2007-08-03T05:48:51.000Z</published>
    [...]
    <author>
        <name>ak326</name>
        <uri>http://gdata.youtube.com/Feeds/api/users/ak326</uri>
    </author>
    <gd:comments>
        <gd:FeedLink href=\'http://gdata.youtube.com/Feeds/api/videos/4ZsiqqOyWx8/comments\' countHint=\'0\'/>
    </gd:comments>
    <media:group>

        [...]
        <yt:duration seconds=\'222\'/>
    </media:group>
    <gd:rating average=\'5.0\' max=\'5\' min=\'1\' numRaters=\'4\' rel=\'http://schemas.google.com/g/2005#overall\'/>
    <yt:statistics favoriteCount=\'8\' viewCount=\'2674\'/>
</entry>
我正在尝试使用PHP来检索此视频的长度,但是
echo $xml->media->yt
但这不起作用。我认为这与媒体和y上的psuedo类有关,但我不知道如何选择它们。     

解决方法

        试试DOMXPath
$xml = new DOMDocument();
$xml->load(path/to/file);
$xpath = new DOMXPath($xml);
$xpath->registerNamespace(\"atom\",\"http://www.w3.org/2005/Atom\");
$xpath->registerNamespace(\"media\",\"http://search.yahoo.com/mrss/\");
$xpath->registerNamespace(\"yt\",\"http://gdata.youtube.com/schemas/2007\");
print $xpath->query(\"/atom:entry/media:group/yt:duration/@seconds\")->item(0)->value;
    ,        这些XML元素已命名。您需要获取名称空间信息。 例
// get nodes in media: namespace for media information
$media = $entry->children(\'http://search.yahoo.com/mrss/\');

// get video player URL
$attrs = $media->group->player->attributes();
    ,        我假设您在这里使用SimpleXML
$nsMedia = $xml->children(\'http://search.yahoo.com/mrss/\');
$group = $nsMedia->group;
$nsYt = $group->children(\'http://gdata.youtube.com/schemas/2007\');
$duration = $nsYt->duration;
echo $duration[\'seconds\'];
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...