我使用的是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
。
我在做什麼錯?