如何从xml apple rss获取数据

时间:2016-04-22 05:13:14

标签: php xml rss

我编写了从http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/topsongs/limit=10/xml

获取数据的代码
  for($i = 0; $i < 10; $i++){

   $title = $xml->entry[$i]->title;  // work
   $name = $xml->entry[$i]->im:name;  //does not work

   $html .= "<br />$title<hr />";} echo $html;

问题是我。我无法获取它的数据。我该如何解决?

1 个答案:

答案 0 :(得分:0)

您无法以这种方式访问​​<im:name>

im:是一个NameSpace前缀:要使用命名空间标记,您必须使用特定的语法。

您可以使用以下方法检索所有文档的命名空间URI:

$namespaces = $xml->getDocNamespaces();

你将获得这个数组:

Array
(
    [im] => http://itunes.apple.com/rss
    [] => http://www.w3.org/2005/Atom
)

每个数组键都是Namespace前缀,每个数组值都是Namespace URI。带有空键的URI表示全局文档名称空间URI。

SimpleXML没有使用命名空间的最佳语法(IMO DOMDocument是更好的选择)。在你的情况下,你必须这样做:

$children = $xml->entry[$i]->children( 'im', True );
echo $children->artist . '<br>';
echo $children->name . '<br>';

->entry[0]的结果:

Prince & The Revolution
Purple Rain

->children第二个参数True表示“将第一个参数视为前缀”;作为替代方案,您可以通过以下方式使用完整的名称空间URI:

$children = $xml->entry[$i]->children( 'http://itunes.apple.com/rss' );

...♪我只想看到你在紫色的雨中笑!♪...