How do you quickly locate element/elements via xpath string on a given org.w3c.dom.document? there seems to be no FindElementsByXpath()
method. For example
/html/body/p/div[3]/a
I found that recursively iterating through all the child node levels to be quite slow when there are lot of elements of same name. Any suggestions?
I cannot use any parser or library, must work with w3c dom document only.
Try this:
//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); }
With the following page.html
file:
<html> <head> </head> <body> <p> <div></div> <div></div> <div><a>link</a></div> </p> </body> </html>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With