Узлы Xpath и DOMDocument - PullRequest
       9

Узлы Xpath и DOMDocument

0 голосов
/ 11 сентября 2018

Я пытался написать простой CSS-вкладыш, поскольку другие, доступные онлайн, либо используют интерфейс, библиотеку jquery, либо имеют массу включений, для управления которыми нужен композитор.

Я создавал запросы XPath, применяя правила к селекторам CSS, и эти правила работают при ручной проверке их в chrome.

Код:

$new_document = new DOMDocument();
$new_document->loadHTML( $page );
$xpa_document = new DOMXpath($new_document);

foreach( $css['selector'] as $key => $path){
    $node = $xpa_document->query( $xpath );
    $item = $node->item(0);
    $styles = $item->getAttribute( 'style' );
    $styles .= $stylemap['styles'];
    $item->setAttribute('style', $styles );
    $new_document->saveHTML();
}

У меня проблемы с возвратом узла, чтобы манипулировать им с помощью DOMDocument. line $item = $node->item(0); вызывает сбой во время выполнения скрипта, и проверка на empty (), похоже, не имеет никакого эффекта.

Есть ли способ загрузить найденный в XPATH узел в DOMDocument список узлов?

1 Ответ

0 голосов
/ 11 сентября 2018

Попробуйте обернуть результат запроса XPath в цикл foreach, это должно избежать проблемы

foreach( $css['selector'] as $key => $path){
    $entries = $xpa_document->query( $xpath );
    foreach ($entries as $entry) {
        $styles = $entry->getAttribute( 'style' );
        $styles .= $stylemap['styles'];
        $entry->setAttribute('style', $styles );
    }
    $new_document->saveHTML();
}
...