我使用的是Node.js的XPath和我有以下的HTML文档,在这里我想选择所有的文章节点,然后在第二个步骤中的所有的div类:为什么XPath选择上下文节点之外的节点?
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<article>
<div>123456</div>
<div class="abc">Hello0!</div>
</article>
<article>
<div>123456</div>
<div class="abc">Hello1!</div>
</article>
<article>
<div>123456</div>
<div class="abc">Hello2!</div>
</article>
<article>
<div>123456</div>
<div class="abc">Hello3!</div>
</article>
<article>
<div>123456</div>
<div class="abc">Hello4!</div>
</article>
<article>
<div>123456</div>
<div class="abc">Hello5!</div>
</article>
<article>
<div>123456</div>
<div class="abc">Hello6!</div>
</article>
<article>
<div>123456</div>
<div class="abc">Hello7!</div>
</article>
<article>
<div>123456</div>
<div class="abc">Hello8!</div>
</article>
<article>
<div>123456</div>
<div class="abc">Hello9!</div>
</article>
</body>
</html>
我用下面的代码选择节点:
var xpath = require('xpath');
var DOMParser = require('xmldom').DOMParser;
let parser: DOMParser = new DOMParser();
let doc = parser.parseFromString("HTML-document","text/xml");
let nodes: Node[] = xpath.select("//article", doc);
console.log("NODES: ", nodes.length);
let divs: Node[] = xpath.select("//div[@class='abc']", nodes[0]);
console.log("DIVS: ", divs.length);
我的问题是,检查这两个控制台日志时,第一个说:"NODES: 10"
。
到目前为止,我有十个文章节点。但是,当我在十个文章节点中的第一个节点上再次选择时,控制台将显示"DIVS: 10"
。所以XPath选择了一篇文章中的所有10个div,我预计只有一篇div
。
我在做什么错?