2011-03-22 16 views
9

मान लें कि मेरा HTML दस्तावेज़ इस तरह है:मैं नोकोगिरी में अगला HTML तत्व कैसे प्राप्त करूं?

<div class="headline">News</div> 
<p>Some interesting news here</p> 
<div class="headline">Sports</div> 
<p>Baseball is fun!</p> 

मैं headline divs को निम्न कोड के साथ प्राप्त कर सकता हूं:

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

url = "mypage.html" 
doc = Nokogiri::HTML(open(url)) 

doc.css(".headline").each do |item| 
    puts item.text 
end 

लेकिन मैं निम्न p टैग में सामग्री को कैसे एक्सेस करूं ताकि News है Some interesting news here से संबंधित, आदि?

उत्तर

28

आप Node#next_element हैं:

doc.css(".headline").each do |item| 
    puts item.text 
    puts item.next_element.text 
end 

वहाँ भी item.next है, लेकिन यह भी पाठ नोड्स वापस आ जाएगी, जहां item.next_element केवल तत्व नोड्स वापस आ जाएगी (जैसे p)।

+0

जब मैं 'next_element' ** EDIT ** का उपयोग करता हूं तो मुझे 'nil' ऑब्जेक्ट मिल रहा है ** ऐसा लगता है कि" शीर्षक "div'' span' के अंदर है। मैं XML उदाहरण – cbmeeks

+1

अपडेट करूंगा जो चाल है। मुझे 'item.parent.next_element' करना था क्योंकि हेडलाइन div एक स्पैन टैग के अंदर था। धन्यवाद! – cbmeeks

+0

आप उस HTML को तब सत्यापित करना चाहेंगे। अगर मुझे याद है कि सही divs span टैग के अंदर नहीं होना चाहिए। –

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