2011-06-30 21 views
51

Belirli bir org.w3c.dom.document öğesinde xpath dizesi aracılığıyla öğeyi/öğeleri hızla nasıl bulursunuz? FindElementsByXpath() yöntemi yok gibi görünüyor. ÖrneğinJava: org.w3c.domument üzerinde xpath dizesi aracılığıyla bir öğenin nasıl konumlandırılacağı

/html/body/p/div[3]/a 

için ben aynı adlı elemanlarının çok olduğunda bu yinelemeli oldukça yavaş olması tüm alt düğüm seviyeleri ile yineleme buldum. Baska öneri?

Ayrıştırıcı veya kitaplık kullanamıyorum, yalnızca w3c dom belgesini kullanmalısınız.

+0

https://stackoverflow.com/questions/45495758/detect-hyperlink-hover-in-webview-and-: Aşağıdaki page.html dosyası ile

//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.getDocumentElement(), XPathConstants.NODESET); for (int i = 0; i < nodes.getLength(); ++i) { Element e = (Element) nodes.item(i); } 

print-the-link – Sedrick

cevap

85

bu deneyin:

<html> 
    <head> 
    </head> 
    <body> 
    <p> 
    <div></div> 
    <div></div> 
    <div><a>link</a></div> 
    </p> 
    </body> 
</html> 
+0

Kodumda 'doc' org.w3c.dom.Document' türündendir. Zaten bir 'Belge' örneğiniz varsa, kodumun son iki satırını kullanın ve işte bu kadar! P.S .: Neden düşüş yok? –

+0

bu, metni döndürür. Hakimiyete ya da egemenliğe ihtiyacım var. – KJW

+0

Düzenlememe bakın ('XPathConstants.NODESET' parametresinin tanıtımı) - şimdi' NodeList' döndürüyor. Ayrıca diğer sabitlere de bir göz atın. –

İlgili konular