Свойство php DOMDocument nodeName, возвращающее '#text' с nodeName

Я хочу извлечь содержимое тела html-страницы вместе с tagNames ее дочернего элемента. Я взял пример html, подобный этому:

<html>
<head></head>
<body>
<h1>This is H1 tag</h1>
<h2>This is H2 tag</h2>
<h3>This is H3 tag</h3>
</body>
</html>

Я реализовал php-код, как показано ниже, и он работает нормально.

$d=new DOMDocument();
$d->loadHTMLFile('file.html');
$l=$d->childNodes->item(1)->childNodes->item(1)->childNodes;
for($i=0;$i<$l->length;$i++)
{
echo "<".$l->item($i)->nodeName.">".$l->item($i)->nodeValue."</".$l->item($i)->nodeName.">";
}

Этот код работает отлично, но когда я попытался сделать это, используя цикл foreach вместо цикла for, свойство nodeName возвращало '#text' для каждого фактического имени узла. Вот этот код

$l=$d->childNodes->item(1)->childNodes->item(1)->childNodes;
foreach ($l as $li) {
    echo $li->childNodes->item(0)->nodeName."<br/>";
}

Почему так?

11
задан ThinkingStiff 17 February 2013 в 03:36
поделиться