我尝试创建一个PHP脚本以提取所有数据,但这不起作用。我试图获得im:price
和其他属性,但我不知道如何获取它们。
任何人都可以帮我纠正我的剧本吗?
<?php
$rss = new DOMDocument();
$rss->load('https://itunes.apple.com/fr/rss/topfreeapplications/limit=25/xml');
$feed = array();
foreach ($rss->getElementsByTagName('entry') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'price' => $node->getElementsByTagName('im')->item(0)->getAttribute('price')
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
);
array_push($feed, $item);
}
$limit = 5;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$link = $feed[$x]['link'];
$description = $feed[$x]['desc'];
$date = date('l F d, Y', strtotime($feed[$x]['date']));
echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />';
echo '<small><em>Posted on '.$date.'</em></small></p>';
echo '<p> Price is '.$price.'</p>';
}
?>
答案 0 :(得分:3)
为了解析所有im
个节点,你必须使用这样的命名空间。
$namespaces = $entry->getDocNamespaces(true);
$items = $entry->children($namespaces['im']);
以下是一个让您入门的示例:
<?php
$rss = "https://itunes.apple.com/fr/rss/topfreeapplications/limit=25/xml";
$xml = simplexml_load_file($rss);
foreach ($xml->entry as $entry){
$namespaces = $entry->getDocNamespaces(true);
$items = $entry->children($namespaces['im']);
$name = $items->name;
$summary = $entry->summary;
$price = $items->price;
$image = $items->image[1];
$rights = $entry->rights;
对于所有im
个节点,请使用$items->foo;
。对于没有im
命名空间的所有节点,请使用$entry->bar;