163: def parse(item)
164:
165: if ((e = item.elements['title'] || item.elements['rss:title']) &&
166: e.text) ||
167: ((e = item.elements['pubDate'] || item.elements['rss:pubDate']) &&
168: e.text)
169: @title = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
170: end
171:
172: if ((e = item.elements['link'] || item.elements['rss:link']) && e.text)||
173: (e = item.elements['guid'] || item.elements['rss:guid'] and
174: not (e.attribute('isPermaLink') and
175: e.attribute('isPermaLink').value == 'false'))
176: @link = e.text.rmWhiteSpace!
177: end
178:
179: if (e = item.elements['content:encoded']) ||
180: (e = item.elements['description'] || item.elements['rss:description'])
181: @content = FeedParser::getcontent(e, @feed)
182: end
183:
184: if e = item.elements['dc:date'] || item.elements['pubDate'] ||
185: item.elements['rss:pubDate']
186: begin
187: @date = Time::xmlschema(e.text)
188: rescue
189: begin
190: @date = Time::rfc2822(e.text)
191: rescue
192: begin
193: @date = Time::parse(e.text)
194: rescue
195: @date = nil
196: end
197: end
198: end
199: end
200:
201: @creator = @feed.creator
202: if (e = item.elements['dc:creator'] || item.elements['author'] ||
203: item.elements['rss:author']) && e.text
204: @creator = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
205: end
206:
207: if (e = item.elements['dc:subject']) && e.text
208: @subject = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
209: end
210:
211: if (e = item.elements['dc:category'] || item.elements['category'] ||
212: item.elements['rss:category']) && e.text
213: @category = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
214: end
215:
216: item.each_element('enclosure') do |e|
217: url = e.attribute('url').value if e.attribute('url')
218: length = e.attribute('length').value if e.attribute('length')
219: type = e.attribute('type').value if e.attribute('type')
220: @enclosures << [ url, length, type ] if url
221: end
222: end