Я пытаюсь проверить следующий HTML-код (
Обратите внимание на текстовое содержимое внутри тега IMG, которое структурно корректно как разметка, но недопустимо как HTML):
<html>
<head>
</head>
<body>
<img src="./">
Some Text
</img>
</body>
</html>
Используя PHP и DomDocument, я пытаюсь прочитать все дерево с помощью XPATH:
$dom = new DOMDocument();
$dom->validateOnParse = 0;
$dom->loadHTML($htmlSource);
$xpath = new DOMXPath($dom);
$allNodes = $xpath->query("//node()");
В результате я получаю:
/html
/html/head
/html/body
/html/body/#text[1]
/html/body/img
/html/body/#text[2]
что явно не соответствует точной структуре HTML.
То, что я ожидал увидеть, это
....
/html/body/img/#text
....
Почему XPATH интерпретирует дерево таким образом?
Как я могу заставить его работать так, как я ожидал?
Задача ещё не решена.
Других решений пока нет …