rsschannel.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "rsschannel.h"
  2. RssChannel::RssChannel(QObject* parent) : QObject(parent)
  3. {
  4. }
  5. QString RssChannel::url() const
  6. {
  7. return m_url;
  8. }
  9. void RssChannel::setUrl(const QString& url)
  10. {
  11. m_url = url;
  12. }
  13. void RssChannel::openUrl(const QString& url)
  14. {
  15. m_url = url;
  16. SyncHttpObject* http = new SyncHttpObject();
  17. QByteArray ret;
  18. http->getHtmlData(m_url, ret);
  19. QDomDocument doc;
  20. doc.setContent(ret);
  21. QDomElement rssNode = doc.documentElement();
  22. QDomNode channelNode = rssNode.firstChild();
  23. for (int i = 0; i < channelNode.childNodes().count(); i++)
  24. {
  25. QDomNode itemNode = channelNode.childNodes().at(i);
  26. if (itemNode.nodeName() == "item")
  27. {
  28. RssInfo rssInfo;
  29. for (int j = 0; j < itemNode.childNodes().count(); j++)
  30. {
  31. QDomNode infoNode = itemNode.childNodes().at(j);
  32. QString name = infoNode.nodeName();
  33. QString value = infoNode.toElement().text();
  34. if (name == "title")
  35. {
  36. rssInfo.title = value;
  37. }
  38. else if (name == "content")
  39. {
  40. rssInfo.content = value;
  41. }
  42. }
  43. items << rssInfo;
  44. }
  45. }
  46. delete http;
  47. }