2011-08-12 19 views
18

मैं jsoup के माध्यम से एक यूआरएल से कनेक्ट और यह की सभी सामग्री मिल जाएगा पुनरावृति लेकिन अगर मैं की तरह का चयन बात है,चयन Jsoup और सभी तत्वों

doc.select("body") 

इसकी एक भी तत्व लौटने लेकिन मैं प्राप्त करना चाहते हैं पेज में और उन्हें उदाहरण के लिए एक के बाद एक पुनरावृति सभी तत्वों,

<html> 
<head><title>Test</title></head> 
<body> 
<p>Hello All</p> 
<a href="test.html">Second Page</a> 
<div>Test</div> 
</body> 
</html> 

मैं शरीर मैं एक लाइन की तरह में परिणाम हो रही है का उपयोग कर चयन करते हैं,

Test Hello All Second Page Test 

इसके बजाय मैं सभी तत्वों का चयन करें और एक के बाद एक पुनरावृति और की तरह परिणाम चाहते हैं,

Test 
Hello All 
Second Page 
Test 

कि jsoup का उपयोग कर संभव होगा?

धन्यवाद,
कार्तिक

उत्तर

47

आप सभी का चयन कर सकते * चयनकर्ता का उपयोग कर दस्तावेज़ के तत्व और फिर Element#ownText() का उपयोग करके प्रत्येक का अलग-अलग पाठ प्राप्त करें।

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

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

नहीं यह भी एक ही उत्पादन, किसी भी विचार का निर्माण कर रहा है? – Karthik

+1

तब यह आपके प्रश्न में दिखाए गए शरीर के प्रत्यक्ष बच्चे नहीं हैं। मैं जवाब अपडेट करूंगा। – BalusC

+0

धन्यवाद दोस्त एक आकर्षण की तरह काम करता है। – Karthik

0

आप XPath या किसी पुस्तकालय जो XPath

शामिल अभिव्यक्ति //text()

टेस्ट अपने xml के साथ अभिव्यक्ति है का उपयोग कर सकते here

1

जेएसओपी लाइब्रेरी का उपयोग कर दस्तावेज़ के शरीर के भीतर सभी तत्व प्राप्त करने के लिए।

doc.body().children().select("*");

दस्तावेजों शरीर तत्वों में तत्वों की सिर्फ पहली स्तर प्राप्त करने के लिए।

doc.body().children();

+0

यह एक महत्वपूर्ण भेद है जो अन्य उत्तरों से तुरंत स्पष्ट नहीं है। धन्यवाद। दस्तावेज़ निकाय के पहले तत्वों और * उनके * बच्चों (दूसरा उदाहरण) प्राप्त करने के लिए, शरीर टैग (पहले उदाहरण) के सभी तत्वों की एक फ्लैट सूची के विपरीत। – Murrah

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