Невозможно получить nodeValue, используя класс DOMDocument в PHP - PullRequest
0 голосов
/ 24 апреля 2010

Я анализирую HTML-документ с использованием класса DOMDocument в PHP, я хотел получить значение nodeValue элемента div, но оно дает мне значение NULL,

<div id="summary">
   Hi, my name is <span>ABC</span>
   <br/> 
   address is here at stackoverflow...
   <span>....
   ....
</div>

хочу получить значение внутри div, и код, который я написал, был

$div_node=$dom->getElementById("summary");
$node_value=$div_node->nodeValue;

но это дает мне нулевое значение.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2010

Идентификатор не зарегистрирован в документе, поэтому не может быть запрошен. Один из вариантов - просмотреть HTML, явно указав, какой атрибут каждого элемента является его идентификатором, другой - проанализировать документ по DTD, а третий - отказаться от попытки использовать getElementById и использовать вместо него XPath.

Для последнего вы бы использовали что-то вроде (ключевым моментом является запрос XPath):

$xpath     = new DOMXPath($dom);
$summaries = $xpath->query('//div[@id="summary"]');
$summary   = 'unknown';
if ($summaries->length > 0) {
    $summary = $summaries->item(0)->nodeValue;
}
0 голосов
/ 24 апреля 2010

Класс DOMDocument требует корректного HTML, твой тег div не закрыт. Когда он возвращает ноль, это означает, что он не может найти элемент.

...