我发现我的问题在于 XML 解析而不是 API 输出。我试图将 XML 输出转换为 JSON/Array 以提供更轻松的数据操作,但由于节点名称和嵌套中的冒号,我遇到了困难,而且我在互联网上找到的任何功能都无法像这样解析 XML 数据。
我提供了一些代码,以防它可能对某人有用:
public static function generarXMLBatch($listaIdsYoutube)
{
$version = "2";
$batchUrl = "https://gdata.youtube.com/feeds/api/users/batch?v=".$version;
$entryUrl = "https://gdata.youtube.com/feeds/api/users/";
$xmlDoc = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:media="http://search.yahoo.com/mrss/"
xmlns:batch="http://schemas.google.com/gdata/batch"
xmlns:yt="http://gdata.youtube.com/schemas/2007">
<batch:operation type="query"/></feed>');
foreach($listaIdsYoutube as $idYoutube) {
$xmlDoc->addChild("entry")->addChild("id", $entryUrl.$idYoutube["perfilYoutube"]."?v=".$version);
}
//SimpleXML to String
$xmlDoc = $xmlDoc->saveXML();
//XML string to CURL
$xmlDoc = My_Funciones::cURL_XML($batchUrl, $xmlDoc);
//XML string CURL output to SimpleXML
$xmlDoc = new SimpleXMLElement($xmlDoc);
return $xmlDoc;
}
该函数接收一个 Youtube ID 列表,生成 XML Batch 查询(最多可以同时查询 50 个视频/用户...),并以 SimpleXML 格式返回查询后的输出,以便您可以通过以下方式访问:
$xmlDoc->entry->....
问候