- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用XPath获取bing搜索结果。这是我的代码:
$html = file_get_contents("http://www.bing.com/search?q=bacon&first=11");
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHtml($html);
$x = new DOMXpath($doc);
$output = array();
// just grab the urls for now
foreach ($x->query("//li[@class='b_algo']") as $node)
{
//$output[] = $node->getAttribute("href");
$tmpDom = new DOMDocument();
$tmpDom->loadHTML($node);
$tmpDP = new DOMXPath($tmpDom);
echo $tmpDP->query("//div[@class='b_title']//h2//a//href");
}
return $output;
$node
中的
foreach
中提取链接和文本,但是由于
$node
本身是一个对象,因此我无法从中创建
DOMDocument
。我该如何查询?
最佳答案
首先,您的XPath表达式尝试匹配不存在的href
子元素,并在@href
中查询属性。
您无需创建任何新的DOMDocument
,只需将$node
作为上下文项传递:
foreach ($x->query("//li[@class='b_algo']") as $node)
{
var_dump( $x->query("./div[@class='b_title']//h2//a//@href", $node)->item(0) );
}
foreach ($x->query("//li[@class='b_algo']/div[@class='b_title']/h2/a/@href") as $node)
{
var_dump($node);
}
关于php - 如何在PHP中使用XPath查询DOMNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30831157/
这个附加过程工作正常: document.getElementById('x').appendChild( document.importNode(node, true) ) 但是当我尝试 jQue
我正在尝试使用 jquery 加载 dojo 图表。我正在使用这段代码。但是在第二次单击时,在第一个按钮中出现此错误。如果我单击第一个按钮,单击第二个按钮,然后再次单击第一个按钮,也会发生同样的情况。
我有一个具有某些属性的 DOMNode 对象。 $Node->attributes 是一个 DOMNamedNodeMap,它没有删除映射中的条目之一的方法。 DOMNode 类也没有从元素中删除属性
我正在尝试使用与 Dialog 相同的 templateString 设置自定义对话框,但添加 Custom进入内容区域。 require([ "dojo/_base/declare",
我正在尝试替换所有 DOMDocument 中带有 的元素元素。做到这一点的最好方法似乎是捕获所有 使用 getElementsByTagName 元素,然后创建新元素来替换它们。 问题是,我看不
当获取在 nodeValue 中有实体的 DOMNode 对象的 nodeValue(即 a & gt;)时,它将实体转换为它的可打印字符(即 >) 有没有人知道一种方法可以让它保持作为一个实体,当它
我需要一种方法来识别对象(DOMNode 类型)的属性是否发生了更改(或者被创建或删除,可选)。 我有一个 INPUT 元素,并且在修改属性 .value 时必须收到通知。问题是没有有一个 attr
假设我的组件有一个 DOMNode(就像 一样简单),另一个组件也可以控制它。 有什么方法可以防止其他组件通过 JS 设置样式属性? 例如,我设置了domNode.style.color = "bl
我正在尝试在我的 html 字符串中插入节点。我的目标是在每个 h2 标签之前插入一个元素。 为此,我正在使用: $htmlString = "some html"; $DOM = new DOMDo
我对如何重新排序节点有点困惑。我正在尝试添加两个简单的“向上移动项目”和“向下移动项目”功能。虽然 insertBefore() 做了我想在前一个节点之前移动同级节点的操作,但在 DOM 中向下移动一
我正在使用 xpath 表达式来确定我的 DOM 树中的某个 div 类(感谢 VolkerK!)。 foreach($xpath->query('//div[@class="posts" and d
我使用 Xerces C++ API 编写了一个 XML 解析器。我有获取似乎间歇性工作的节点值的方法,我不确定为什么。 我是 XML 的新手,如果我的行话不正确,请原谅我。 例如,我可以像下面这样成
我对这两个术语感到困惑。浏览器端javascript编程有什么区别?我使用dojo作为框架。并且只有domNode的概念。但浏览器调试器总是告诉我一些 htmlelement 的信息。它们只是同一个东
我正在动态创建一个 XML 文档。我需要知道我刚刚创建的节点的 XPath。我没有看到像 DOMNode::calculateXPath(void):string 这样的函数我不愿意自己写一个。是否有
如何从 HTML 片段的字符串创建 DOMNode,当然假设该字符串包含单个根节点? 最佳答案 DOMDocumentFragments 确实有一个loadXML() 方法 libxml_use_in
我目前正在尝试使用 DOMDocument 解析文档,但遇到了一些严重的问题。我创建了一个在 php 5.2.9 上运行良好的脚本,使用 DOMNode::nodeValue 删除内容。相同的脚本无法
我一直在尝试像这样合并两个 XML 文档: $def = new DOMDocument( '1.0' ); $rdef = new DOMDocument( '1.0' ); $def->load
例如我有两个 DOMNode: 让node1 = document.querySelector('#node-1'); 让node2 = document.querySelector('#node-2
所以这是行不通的: foreach ($element->attributes as $attribute) { $element->removeAttribu
我想将 DOMNode 对象从对 getElementsByTagName() 的调用转换为 DOMElement 以便访问像 这样的方法getElementsByTagName() 在子元素上。在任
我是一名优秀的程序员,十分优秀!