我编写了从 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;
问题是我.我无法获得它的数据.我该如何解决?
您无法以这种方式访问<im:name>
。
im:
是一个命名空间前缀:要使用命名空间标签,您必须使用特定的语法。
您可以使用以下命令检索所有文档的命名空间 URI:
$namespaces = $xml->getDocNamespaces();
您将获得此数组:
Array
(
[im] => http://itunes.apple.com/rss
[] => http://www.w3.org/2005/Atom
)
每个数组键都是命名空间前缀,每个数组值都是命名空间 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' );
。 ♪ 我只想看到你在紫雨♪中笑...