Package net.dromard.common.rss

Source Code of net.dromard.common.rss.RSSFeedReader

package net.dromard.common.rss;

import java.io.IOException;
import java.net.URL;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import net.dromard.common.rss.feed.Channel;
import net.dromard.common.rss.feed.Enclosure;
import net.dromard.common.rss.feed.Item;
import net.dromard.common.rss.feed.RSS;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class RSSFeedReader extends RSSReader {

  public RSS load(final URL url) throws ParserConfigurationException, SAXException, IOException {
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = builder.parse(url.openStream());
    RSS rss = new RSS();
    NodeList feedNodes = doc.getElementsByTagName("rss");
    for (int f = 0; f < feedNodes.getLength(); f++) {
      Element element = (Element) feedNodes.item(f);
      rss.setVersion(element.getAttribute("version"));
      NodeList channelNodes = element.getElementsByTagName("channel");
      if (channelNodes.getLength() >= 1) {
        element = (Element) channelNodes.item(0);
        Channel channel = new Channel();
        channel.setTitle(getElementValue(element, "title"));
        channel.setDescription(getElementValue(element, "description"));
        channel.setLink(getElementValue(element, "link"));
        channel.setAuthor(getElementValue(element, "author"));
       
        NodeList items = element.getElementsByTagName("item");
        for (int i = 0; i < items.getLength(); i++) {
          Element itemElmt = ((Element) items.item(i));
          Item item = new Item();
          item.setAuthor(getElementValue(itemElmt, "author"));
          item.setCategory(getElementValue(itemElmt, "category"));
          item.setDescription(getElementValue(itemElmt, "description"));
          item.setLink(getElementValue(itemElmt, "link"));
          item.setGuid(getElementValue(itemElmt, "guid"));
          item.setPublished(getElementValue(itemElmt, "pubDate"));
          item.setTitle(getElementValue(itemElmt, "title"));
          NodeList enclosureNode = itemElmt.getElementsByTagName(Enclosure.ENCLOSURE);
          if (enclosureNode.getLength() == 1) {
            Enclosure enclosure = new Enclosure();
            Element enclosureElmt = ((Element) enclosureNode.item(0));
            String length = enclosureElmt.getAttribute(Enclosure.LENGTH);
            if (length.length() > 0) {
              try {
                enclosure.setLength(Integer.parseInt(length));
              } catch (NumberFormatException e) {
              }
            }
            enclosure.setType(enclosureElmt.getAttribute(Enclosure.TYPE));
            enclosure.setUrl(enclosureElmt.getAttribute(Enclosure.URL));
            item.setEnclosure(enclosure);
          }
          channel.addItem(item);
        }

        rss.setChannel(channel);
      }
    }
    return rss;
  }
 
  public static void main(String[] args) throws Exception {
    RSSFeedReader reader = new RSSFeedReader();
    //URL u = new File("C:/Projects/picasamoviecollection/src/main/resources/curiouscreature.xml").toURI().toURL();
    //URL u = new File("C:/Projects/picasamoviecollection/src/main/resources/albums.xml").toURI().toURL();
    URL u = new URL("http://picasaweb.google.fr/data/feed/base/user/laurentetsylvie75/albumid/5264008816855671777?alt=rss&kind=photo&authkey=OJ0rnRRHaLA&hl=fr");
    RSS rss = reader.load(u);
    System.out.println(rss.toXML());
  }
}
TOP

Related Classes of net.dromard.common.rss.RSSFeedReader

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.