226: def parse(item)
227:
228: if (e = item.elements['title']) && e.text
229: @title = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
230: end
231:
232: item.each_element('link') do |e|
233: if e.attribute('type') and (
234: e.attribute('type').value == 'text/html' or
235: e.attribute('type').value == 'application/xhtml' or
236: e.attribute('type').value == 'application/xhtml+xml')
237: if (h = e.attribute('href')) && h.value
238: @link = h.value
239: end
240: end
241: end
242:
243: if e = item.elements['content'] || item.elements['summary']
244: if (e.attribute('mode') and e.attribute('mode').value == 'escaped') &&
245: e.text
246: @content = e.text.toUTF8(@feed.encoding).rmWhiteSpace!
247: else
248: @content = FeedParser::getcontent(e, @feed)
249: end
250: end
251:
252: if (e = item.elements['issued'] || e = item.elements['created']) && e.text
253: begin
254: @date = Time::xmlschema(e.text)
255: rescue
256: begin
257: @date = Time::rfc2822(e.text)
258: rescue
259: begin
260: @date = Time::parse(e.text)
261: rescue
262: @date = nil
263: end
264: end
265: end
266: end
267:
268: @creator = @feed.creator
269: if (e = item.elements['author/name']) && e.text
270: @creator = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
271: end
272: end