我编写了从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;
问题是我。我无法获取它的数据。我该如何解决?
答案 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' );
...♪我只想看到你在紫色的雨中笑!♪...