Можно ли выбрать комментарии HTML с помощью QueryPath? - PullRequest
1 голос
/ 12 августа 2011

Я вижу, что это возможно с помощью jQuery, но как это можно сделать в QueryPath?

Выбор комментариев HTML с помощью jQuery

Если нет, может ли кто-нибудь предложить анализатор HTML, который может выбирать комментарии?

Ответы [ 2 ]

2 голосов
/ 23 мая 2012

QueryPath поставляется с расширением под названием QPXML, которое имеет несколько дополнительных методов.Одним из них является comment().

. Чтобы использовать его, просто включите его в свой скрипт:

include 'QueryPath/QueryPath.php';
include 'QueryPath/Extensions/QPXML.php';

htmlqp($html, $selector)->comment();

. Это позволит получить первый комментарий, прикрепленный к выбранным в данный момент узлам.

Если у вас действительно сложный набор комментариев внутри одних и тех же узлов, вы можете сделать что-то вроде этого:

$nodes = $qp->get();
foreach ($nodes as $node) {
   foreach ($node->childNodes as $child) {
      if ($child->nodeType == XML_COMMENT_NODE) {
         // $child is a comment.
         print $child->textContent;
      }
   }
}

Это немного уродливее, но дает лучший доступ к деламгде один элемент имеет много комментариев.

0 голосов
/ 21 мая 2015

Чтобы получить ВСЕ комментарии HTML-страницы через querypath:

    function  getAllComments($node) {
        if ($node->hasChildNodes()) {
            foreach ($node->childNodes as $child) {
                $this->getAllComments($child);
                if ($child->nodeType == XML_COMMENT_NODE) {
                    echo  $child->textContent;
                }
            }

        }
    }

    $html = $qp->get() ;
    getAllComments($html[0]);
...