计数 PHP/XML getElementsByTagName
Count PHP/XML getElementsByTagName
我有一个脚本,它用 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')
动态循环变量?
我尝试了不同的解决方案,但没有用。
您可以使用 $x->length
查询 DOMNodeList 的长度,但最简洁的方法可能是使用 foreach
循环:
foreach ($x as $item) {
$item_title = $item->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
echo ('< li >' . $item_title . '</ li >');
}
哦,在你的帮助下我搞定了:
$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>");
}
我有一个脚本,它用 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')
动态循环变量?
我尝试了不同的解决方案,但没有用。
您可以使用 $x->length
查询 DOMNodeList 的长度,但最简洁的方法可能是使用 foreach
循环:
foreach ($x as $item) {
$item_title = $item->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
echo ('< li >' . $item_title . '</ li >');
}
哦,在你的帮助下我搞定了:
$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>");
}