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