The Webfeed Flutter package for Appeto SDK.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

67 行
2.0 KiB

  1. import 'package:webfeed/domain/dublin_core/dublin_core.dart';
  2. import 'package:webfeed/domain/media/media.dart';
  3. import 'package:webfeed/domain/rss_category.dart';
  4. import 'package:webfeed/domain/rss_content.dart';
  5. import 'package:webfeed/domain/rss_enclosure.dart';
  6. import 'package:webfeed/domain/rss_source.dart';
  7. import 'package:webfeed/util/helpers.dart';
  8. import 'package:xml/xml.dart';
  9. import 'rss_item_itunes.dart';
  10. class RssItem {
  11. final String title;
  12. final String description;
  13. final String link;
  14. final List<RssCategory> categories;
  15. final String guid;
  16. final String pubDate;
  17. final String author;
  18. final String comments;
  19. final RssSource source;
  20. final RssContent content;
  21. final Media media;
  22. final RssEnclosure enclosure;
  23. final DublinCore dc;
  24. final RssItemItunes itunes;
  25. RssItem({
  26. this.title,
  27. this.description,
  28. this.link,
  29. this.categories,
  30. this.guid,
  31. this.pubDate,
  32. this.author,
  33. this.comments,
  34. this.source,
  35. this.content,
  36. this.media,
  37. this.enclosure,
  38. this.dc,
  39. this.itunes,
  40. });
  41. factory RssItem.parse(XmlElement element) {
  42. return RssItem(
  43. title: findElementOrNull(element, "title")?.text,
  44. description: findElementOrNull(element, "description")?.text,
  45. link: findElementOrNull(element, "link")?.text,
  46. categories: element.findElements("category").map((element) {
  47. return RssCategory.parse(element);
  48. }).toList(),
  49. guid: findElementOrNull(element, "guid")?.text,
  50. pubDate: findElementOrNull(element, "pubDate")?.text,
  51. author: findElementOrNull(element, "author")?.text,
  52. comments: findElementOrNull(element, "comments")?.text,
  53. source: RssSource.parse(findElementOrNull(element, "source")),
  54. content: RssContent.parse(findElementOrNull(element, "content:encoded")),
  55. media: Media.parse(element),
  56. enclosure: RssEnclosure.parse(findElementOrNull(element, "enclosure")),
  57. dc: DublinCore.parse(element),
  58. itunes: RssItemItunes.parse(element),
  59. );
  60. }
  61. }