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();
}
我一直在考虑编写一个简单的 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();
}