当前位置:  开发笔记 > 编程语言 > 正文

使用XPath在上下文节点下查找节点不起作用(firefox/firebug/javascript)

如何解决《使用XPath在上下文节点下查找节点不起作用(firefox/firebug/javascript)》经验,为你挑选了2个好方法。

我想从网页中提取信息.

该页面有m个节点,可以通过.evaluate("// div [@ class ='news']",document,....)找到.

对于上述每个节点,其中有3个节点.它们中的每一个都有不同的@class选择器.我想提取这些m 3元组记录.

我尝试按照指示使用.evaluate()函数

https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript

通过使用此代码

parentNodes = document.evaluate("//div[@class='news']", document, ....).
while (true){
   var node = parentNodes.iterateNext();
   var child = document.evaluate("//div[@class='title']", node, ....). 
   ...
}

但是,"child"始终分配给文档中的第一个节点,而不是"node"中的第一个节点.

我在firebug控制台中运行它.

有人知道什么是错的吗?



1> 小智..:

你正在对文件进行评估.因此,正在从XML树的根目录评估XPath表达式.此外,如果您希望XPath从当前上下文中选择一个节点,例如在当前节点的子节点中,您应该使用".//"上下文选择器


@dbreaux就像在Linux shell中一样,无论您身在何处,`/ bin / bash`都指向根目录,如果当前目录中有另一个名为bin的目录,则必须执行`。/ bin / bash`或` bin / bash`

2> Martin Honne..:

如果使用"/"启动XPath表达式,则从上下文节点的根节点/文档节点开始.因此,不是"//div[@class = 'title']"使用"descendant::div[@class = 'title']",而是选择上下文节点的后代div元素.


BTW`hynndant :: div [@class ='title']`等同于`.//div [@class ='title']`.
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有