Xpath 和 DOMDocument 节点

Xpath and DOMDocument nodes

我一直在考虑编写一个简单的 CSS 内联程序,因为在线提供的其他内容要么使用前端,jquery 库,要么有大量需要作曲家管理的包含。

我一直在通过将规则应用于 CSS 选择器来创建 XPath 查询,并且在 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 节点列表中?

尝试将 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();
}