257: def parse(item)
258:
259: if (e = item.elements['title']) && e.text
260: @title = e.text.unescape_html.toUTF8(@feed.encoding).html2text.rmWhiteSpace!
261: end
262:
263: item.each_element('link') do |e|
264: if (h = e.attribute('href')) && h.value
265: @link = h.value
266: end
267: end
268:
269: if e = item.elements['content'] || item.elements['summary']
270: if (e.attribute('mode') and e.attribute('mode').value == 'escaped') &&
271: e.text
272: @content = e.text.toUTF8(@feed.encoding).rmWhiteSpace!
273: else
274: @content = FeedParser::getcontent(e, @feed)
275: end
276: end
277:
278: if (e = item.elements['issued'] || e = item.elements['created'] || e = item.elements['updated'] || e = item.elements['published']) && e.text
279: begin
280: @date = Time::xmlschema(e.text)
281: rescue
282: begin
283: @date = Time::rfc2822(e.text)
284: rescue
285: begin
286: @date = Time::parse(e.text)
287: rescue
288: @date = nil
289: end
290: end
291: end
292: end
293:
294: item.each_element('author/name') do |e|
295: if e.text
296: @creators << e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
297: end
298: end
299:
300: @creators << @feed.creator if @creators.empty? and @feed.creator
301:
302:
303: item.each_element('category') do |e|
304: if (h = e.attribute('term')) && h.value
305:
306: if (l = e.attribute('label')) && l.value
307: cat = l.value
308: else
309: cat = h.value
310: end
311:
312: @categories << cat.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
313: end
314: end
315: end