【问题标题】:Unable to parse atom feed无法解析原子提要
【发布时间】:2018-03-01 08:55:09
【问题描述】:

我正在实施 Youtube 推送通知并实施 webhook。 Youtube 以 atom feed 的形式提供更新。我的问题是我无法解析该提要。

这是 XML:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:yt="http://www.youtube.com/xml/schemas/2015">
<link rel="hub" href="https://pubsubhubbub.appspot.com" />
<link rel="self" href="https://www.youtube.com/xml/feeds/videos.xml?channel_id=UCaNoTnXcQQt3ody_cLZSihw" />
<title>YouTube video feed</title>
<updated>2018-03-01T07:21:59.144766801+00:00</updated>
<entry>
    <id>yt:video:vNQyYJqFopE</id>
    <yt:videoId>vNQyYJqFopE</yt:videoId>
    <yt:channelId>UCaNoTnXcQQt3ody_cLZSihw</yt:channelId>
    <title>Test Video 4</title>
    <link rel="alternate" href="https://www.youtube.com/watch?v=vNQyYJqFopE" />
    <author>
        <name>Testing</name>
        <uri>https://www.youtube.com/channel/UCaNoTnXcQQt3ody_cLZSihw</uri>
    </author>
    <published>2018-03-01T07:21:48+00:00</published>
    <updated>2018-03-01T07:21:59.144766801+00:00</updated>
</entry>

 <?php
   $xml = '<?xml versio......';
   $obj = simplexml_load_string($xml);
   echo '<pre>';print_r($obj);echo '</pre>';

Screenshot

如何获取 yt:videoId 元素的值。我是PHP新手,如果我做错了什么,请纠正我。

【问题讨论】:

  • 请添加您尝试过的“如何获取yt:videoId元素的值”的代码。
  • 我在输出中看不到该属性。该元素包含:
  • 你试过$obj-&gt;entry-&gt;id吗?
  • 不,让我试试。
  • 是的,我知道了。但我需要yt:videoId的值

标签: php parsing xml-parsing atom-feed


【解决方案1】:

似乎包含 yt 命名空间的 XML 元素(例如 &lt;yt:videoId&gt;)没有被 simplexml_load_string 解析。我不知道为什么,但在您的情况下,视频 id 也存在于 &lt;id&gt; 元素中,您只需要提取最后一个值或在它前面简单地剪切 yt:video: 即可。这至少是一个简单的解决方法。

如果您像这样直接使用XPath&lt;yt:videoId&gt; 元素,它也可以工作:

echo $obj->xpath('//yt:videoId')[0];
// output: vNQyYJqFopE

XPath 总是返回一个数组,因此您需要使用[0] 获取第一个元素。

【讨论】:

    【解决方案2】:

    试试这个(更新)

    $str = $obj->entry->id;
    echo substr($str, strpos($str, "video:")+ 6);
    

    获取频道

    $chan = $obj->entry->author->uri;
    echo substr($chan , strpos($chan , "channel/")+ 8);
    

    【讨论】:

    • 我想要 yt:videoId 的值,它的值是 vNQyYJqFopE 和 yt:channelId 的值,它的值是 UCaNoTnXcQQt3ody_cLZSihw
    猜你喜欢
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2023-03-19
    • 2016-12-05
    • 2020-05-18
    相关资源
    最近更新 更多