我有一个脚本,用PHP解析RSS-Feed Url以制作代码。
$xml=("http://www.herecomesthedomain.com/andyourrssfeed.rss");
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
//get elements from "<channel>"
$channel=$xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
//get and output "<item>" elements
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=9; $i++) {
$item_title=$x->item($i)->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
echo ('< li >' . $item_title . '</ li >');
}
但循环包含固定数字(9)。
是否有可能计算
$x=$xmlDoc->getElementsByTagName('item')
变量动态循环?
我尝试了不同的解决方案,但它不起作用。
答案 0 :(得分:0)
您可以使用$x->length
查询DOMNodeList的长度,但最简单的方法可能是使用foreach
循环:
foreach ($x as $item) {
$item_title = $item->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
echo ('< li >' . $item_title . '</ li >');
}
答案 1 :(得分:0)
哦,我在你的帮助下得到了它:
$count = ($xmlDoc->getElementsByTagName('title')->length)-2;
并调用循环:
for ($i=0; $i<=$count; $i++)
我必须减去2个元素(1x用于频道标题,我认为一个用于数组起始编号(0而不是1)。现在它可以工作。
完整代码:
$xml=("http://www.herecomesthedomain.com/andyourrssfeed.rss");
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
//get elements from "<channel>"
$channel=$xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')->item(0)
->childNodes->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
// Count the title-"<item>"-elements
$count= ($xmlDoc->getElementsByTagName('title')->length)-2;
//get and output "<item>" elements
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=$anzahl; $i++) {
$item_title=$x->item($i)->getElementsByTagName('title')->item(0)
->childNodes->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')->item(0)
->childNodes->item(0)->nodeValue;
echo ("<li>" . $item_title . "</li>");
}