Xpath和DOMDocument节点

时间:2018-09-11 13:52:27

标签: xpath domdocument

我一直在考虑编写一个简单的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节点列表中?

1 个答案:

答案 0 :(得分:1)

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