计数 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>");
}