使用XPath在上下文节点下查找节点不起作用(firefox/firebug/javascript)
我想从网页中提取信息 该页面有m个节点,可通过.evaluate(“//div[@class='news']”,document,…)找到 对于上述每个节点,其中有3个节点。它们每个都有不同的@class选择器。我想提取这些M3元组记录 我尝试按照中的说明使用.evaluate()函数 通过使用此代码使用XPath在上下文节点下查找节点不起作用(firefox/firebug/javascript),javascript,firefox,dom,xpath,firebug,Javascript,Firefox,Dom,Xpath,Firebug,我想从网页中提取信息 该页面有m个节点,可通过.evaluate(“//div[@class='news']”,document,…)找到 对于上述每个节点,其中有3个节点。它们每个都有不同的@class选择器。我想提取这些M3元组记录 我尝试按照中的说明使用.evaluate()函数 通过使用此代码 parentNodes = document.evaluate("//div[@class='news']", document, ....). while (true){ var nod
parentNodes = document.evaluate("//div[@class='news']", document, ....).
while (true){
var node = parentNodes.iterateNext();
var child = document.evaluate("//div[@class='title']", node, ....).
...
}
但是,“子节点”始终分配给文档中的第一个节点,而不是“节点”中的第一个节点
我在firebug控制台中运行了这个
有人知道怎么回事吗?您正在给文档打电话。因此,从XML树的根计算XPath表达式。此外,如果希望XPath从当前上下文中选择节点,例如在当前节点的子节点中,则应使用
/
上下文选择器。如果XPath表达式以“/”开头,则从上下文节点的根节点/文档节点开始。因此,不要使用“//div[@class='title']”
而是使用“后代::div[@class='title']”
,这样可以选择上下文节点的后代div元素。也可以使用后代或self
。类似于:substant或self::div..
用于启动作为上下文传递的节点的引用
我希望我帮了忙。用
/
代替/
委员会的解释:
选择文档根的所有para子体,从而选择同一文档中作为上下文的所有//para
元素 节点para
选择上下文节点
选择上下文节点的//para
元素后代para
当前最上面的答案是错误的,因为没有办法在任何其他对象上调用
。evaluate
,而是document
document.evaluate
是正确的。BTWgenderant::div[@class='title']
相当于//div[@class='title']
。前面的“.”是键。我觉得奇怪的是,您可以指定一个上下文,但路径仍然是相对于根的。耸耸肩。@dbreaux它就像在linux shell中一样,/bin/bash
指向根目录,无论您在哪里,如果当前目录中有另一个名为bin的目录,您必须执行/bin/bash
或bin/bash
如果不是从文档中,您还能调用evaluate
?