Document::getElementById('content') 不起作用,但元素在那里

Document::getElementById('content') doesn't work, but the element is there

我正在使用 DOMDocument 进行 DOM 操作,但在使用 getElementById() 方法时遇到问题。我正在寻找 ID 为 'content' 的 div,但是这个 returns NULL:

$element = $document->getElementById('content');

if($element instanceof DOMElement)
{
    // do something
}

但是,下面的代码 return 我正在寻找的元素:

$elements = $document->getElementsByTagName('div'); 
foreach($elements as $element)
    {
        if($element->getAttribute('id') == 'content')
        {
                // do something
                break;
        }
    }

我可能忽略了一些简单的东西,但这 2 段代码对我来说看起来是一样的。 (或者至少应该以相同的方式工作。)第二段代码现在可以运行了,但保持这种状态确实感觉不对。我想知道为什么当第二个方法成功时,第一段代码无法 return 正确的元素。

我发现了这个:

Please note that if your HTML does not contain a doctype declaration, then getElementById will always return null.

通过查找标签名称,然后查找该标签名称的 ID,它将 return ID。

Source