Длина DOMNode- & gt; ChildNodes-> возвращает неверное значение

У меня есть PHP-скрипт, который анализирует веб-страницу и перемещается по ней с помощью библиотек DOMDocument и DOMXpath. Вэнь Бег $tr->ChildNodes->length чтобы получить 3 <td>, инструкция возвращает 6, где 0 возвращает первое <td>1 — пустая строка (19), 2 — вторая <td>, 3 снова пустая строка (19), 4 третья <td>, 5 — это еще раз, когда пустая строка (19), а 6 — весь HTML-код страницы. (проверено с использованием $dom->saveHTML($tr->childNodes->item(0) так далее.)
Как я могу сделать ->length вернуть правильный номер? Почему это ведет себя так странно?

<tr>
<td>
<span>...</span>
</td>
<td>
<a href="..."><img ...></a>
</td>
<td>
<div>
<span>
<a href="...">...</a>
<br>
<ahref="...">...</a>
</span>
<span>...</span>
<br><br>
<a href="...">...</a>, <a href="...">...</a>
</div>
<div>
<a href="...">...</a> | <a href="...">...</a>
</div>
</td>
</tr>

Обратите внимание, что я пропустил некоторые атрибуты, такие как стиль, класс, данные и т. Д.

0

Решение

Такое поведение не совсем «странно». В DOM разрывы строк фактически обрабатываются как пустые узлы. Чтобы получить «правильное» число дочерних элементов, вы должны либо удалить разрывы строк из документа, который вы пытаетесь предварительно проанализировать, либо получить все дочерние элементы и удалить пустые элементы из этого списка узлов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]