特定のorg.w3c.dom.documentでxpath文字列を使用して要素をすばやく見つけるにはどうすればよいですか? FindElementsByXpath()
メソッドはないようです。例えば
/html/body/p/div[3]/a
同じ名前の要素がたくさんある場合、すべての子ノードレベルを再帰的に反復するとかなり遅くなることがわかりました。助言がありますか?
パーサーまたはライブラリを使用できません。w3cdomドキュメントでのみ動作する必要があります。
これを試して:
//obtain Document somehow, doesn't matter how
DocumentBuilder b = DocumentBuilderFactory.newInstance().newDocumentBuilder();
org.w3c.dom.Document doc = b.parse(new FileInputStream("page.html"));
//Evaluate XPath against Document itself
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList)xPath.evaluate("/html/body/p/div[3]/a",
doc, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); ++i) {
Element e = (Element) nodes.item(i);
}
次のpage.html
ファイル:
<html>
<head>
</head>
<body>
<p>
<div></div>
<div></div>
<div><a>link</a></div>
</p>
</body>
</html>