正在nodejs+xpath中获取节点
Acquiring node in nodejs + xpath
我在网页上有一个元素,它通过Chrome检查器提供以下XPath源//*[@id="page-wrapper"]/div/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[3]/td/table[2]/tbody/tr[2]/td[2]/a
我想在node.js.中以程序方式获取这个节点
var parser = new parse5.Parser();
var document = parser.parse(data);
var xhtmldoc = xmlserializer.serializeToString(document);
var xdom = new xmldomparser().parseFromString(xhtmldoc);
var selector = xpath.useNamespaces({"doc": "http://www.w3.org/1999/xhtml"});
var node = selector('//*[@id="page-wrapper"]/div/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[3]/td/table[2]/tbody/tr[2]/td[2]/a', xdom);
console.log(node);
但它始终返回一个带有任何xpath变体的空对象。有可能做到这一点吗?
谢谢。
您似乎在声明正确的命名空间和前缀:
var selector = xpath.useNamespaces({"doc": "http://www.w3.org/1999/xhtml"});
但是在路径表达式中不使用它。在路径表达式中为元素添加doc:
前缀:
var node = selector('//*[@id="page-wrapper"]/doc:div/doc:table/doc:tbody/doc:tr/doc:td/doc:table/doc:tbody/doc:tr/doc:td[2]/doc:table/doc:tbody/doc:tr[3]/doc:td/doc:table[2]/doc:tbody/doc:tr[2]/doc:td[2]/doc:a', xdom);
也就是说,您从ChromeInspector得到的XPath表达式并不是很方便,它只依赖于节点的位置。如果你解释你试图在文档中找到什么(当然,并展示文档),人们可能会提出另一种表达方式。
相关文章:
- JavaScript:在XML中搜索节点并从该节点获取数组
- JsTree从未渲染的节点获取html属性
- 如何从jstree中的选定节点获取所有子节点
- 如何从同级节点获取数据
- 始终如一地从 XML 节点获取文本
- 如何使用节点获取发送 cookie
- 使用 jQuery 从 Chrome 中的 XML 节点获取内部 XML
- angular js路由中提供的TemplateURL是't从节点获取响应时加载所需的文件
- 从javascript中的选择性节点获取文本
- 使用递归函数从父节点获取数据
- 如何在没有选择器的情况下从父节点获取子节点
- 从Unirest节点获取请求函数发送响应到Jade视图
- 节点获取接收空正文
- 在Javascript中解析XML时从父节点获取属性
- 使用Javascript或jQuery从子节点获取父跨度标题值
- 使用React和Bacon从节点获取EventStream
- 从元素中的子节点获取值
- 如何从节点获取当前用户
- 有没有一种方法可以让子控制器继承服务呢?从其父节点获取
- 反应;父节点从子节点获取输入数据