2012-04-11 17 views
7

मुझे लगता है कि यह सवाल पूछा गया है, लेकिन मुझे कुछ भी नहीं मिला।मैं Jsoup का उपयोग कर HTML पेड़ को कैसे पार कर सकता हूं?

Jsoup में Document तत्व से, मैं HTML सामग्री में सभी तत्वों के लिए कैसे जा सकता हूं?

मैं प्रलेखन पढ़ रहा था और मैं childNodes() विधि का उपयोग करने के बारे में सोच रहा था, लेकिन यह केवल नीचे एक लीवल (जो मैं समझता हूं) से नोड्स लेता हूं। मुझे लगता है कि मैं इस विधि के साथ कुछ रिकर्सन का उपयोग कर सकता हूं, लेकिन मैं जानना चाहता हूं कि ऐसा करने के लिए कोई और उचित/मूल तरीका है या नहीं।

उत्तर

18

Document (और Node सबक्लास) से, आप traverse(NodeVisitor) विधि का उपयोग कर सकते हैं।

उदाहरण के लिए: आप का उपयोग कर * चयनकर्ता दस्तावेज़ के सभी तत्वों का चयन कर सकते

public class JsoupDepthFirst { 

    private static String htmlTags(Document doc) { 
     StringBuilder sb = new StringBuilder(); 
     htmlTags(doc.children(), sb); 
     return sb.toString(); 
    } 

    private static void htmlTags(Elements elements, StringBuilder sb) { 
     for(Element el:elements) { 
      if(sb.length() > 0){ 
       sb.append(","); 
      } 
      sb.append(el.nodeName()); 
      htmlTags(el.children(), sb); 
      sb.append(",").append(el.nodeName()); 
     } 
    } 

    public static void main(String... args){ 
     String s = "<html><head>this is head </head><body>this is body</body></html>"; 
     Document doc = Jsoup.parse(s); 
     System.out.println(htmlTags(doc)); 
    } 
} 
-1

आप नीचे दिए गए कोड का उपयोग कर सकते हैं।

Elements elements = document.body().select("*"); 

2) के लिए पुनः प्राप्त प्रत्येक व्यक्तिगत रूप से का उपयोग कर Element.ownText() विधि का पाठ।

for (Element element : elements) { 
    System.out.println(element.ownText()); 
} 

3) प्रत्येक व्यक्तिगत रूप से Element.html (स्ट्रिंग strHtml) का उपयोग करके प्रत्येक के पाठ को संशोधित करने के लिए। (एक तत्व में किसी भी मौजूदा भीतरी एचटीएमएल को साफ करता है, और पार्स HTML के साथ यह बदल देता है।)

element.html(strHtml); 

आशा यह आप में मदद मिलेगी। धन्यवाद!

0

1):

document.traverse(new NodeVisitor() { 
    public void head(Node node, int depth) { 
     System.out.println("Entering tag: " + node.nodeName()); 
    } 
    public void tail(Node node, int depth) { 
     System.out.println("Exiting tag: " + node.nodeName()); 
    } 
}); 
संबंधित मुद्दे

 संबंधित मुद्दे