Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;

public class Main {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new File("testrss.xml"));

        Element root = doc.getDocumentElement();
        if (!root.getTagName().equalsIgnoreCase("rss")) {
            throw new IOException("Invalid RSS document");
        }
        List<RSSChannel> channels = readChannels(root.getChildNodes());
        for (RSSChannel channel : channels) {
            System.out.println("Channel: ");
            System.out.println("    title: " + channel.getTitle());
            System.out.println("    link: " + channel.getLink());
            System.out.println("    description: " + channel.getDescription());
            for (RSSItem item : channel.getItems()) {
                System.out.println("    Item: ");
                System.out.println("        title: " + item.getTitle());
                System.out.println("        link: " + item.getLink());
                System.out.println("        description: " + item.getDescription());
                System.out.println("        pubDate: " + item.getPubDate());
                System.out.println("        guid: " + item.getGuid());
            }
        }
    }

    private static List<RSSChannel> readChannels(NodeList nodes) {
        List<RSSChannel> result = new ArrayList<RSSChannel>();
        for (int i = 0; i < nodes.getLength(); ++i) {
            Node node = nodes.item(i);
            if (node instanceof Element) {
                Element elem = (Element) node;
                if (elem.getTagName().equalsIgnoreCase("channel")) {
                    result.add(readChannel(elem.getChildNodes()));
                }
            }
        }
        return result;
    }

    private static RSSChannel readChannel(NodeList nodes) {
        RSSChannel channel = new RSSChannel();
        for (int i = 0; i < nodes.getLength(); ++i) {
            Node node = nodes.item(i);
            if (node instanceof Element) {
                Element elem = (Element) node;
                if (elem.getTagName().equalsIgnoreCase("title")) {
                    channel.setTitle(getText(elem));
                } else if (elem.getTagName().equalsIgnoreCase("link")) {
                    channel.setLink(getText(elem));
                } else if (elem.getTagName().equalsIgnoreCase("description")) {
                    channel.setDescription(getText(elem));
                } else if (elem.getTagName().equalsIgnoreCase("item")) {
                    channel.addItem(readItem(elem.getChildNodes()));
                }
            }
        }
        return channel;
    }

    private static RSSItem readItem(NodeList nodes) {
        RSSItem item = new RSSItem();
        for (int i = 0; i < nodes.getLength(); ++i) {
            Node node = nodes.item(i);
            if (node instanceof Element) {
                Element elem = (Element) node;
                if (elem.getTagName().equalsIgnoreCase("title")) {
                    item.setTitle(getText(elem));
                } else if (elem.getTagName().equalsIgnoreCase("link")) {
                    item.setLink(getText(elem));
                } else if (elem.getTagName().equalsIgnoreCase("description")) {
                    item.setDescription(getText(elem));
                } else if (elem.getTagName().equalsIgnoreCase("pubDate")) {
                    item.setPubDate(getText(elem));
                } else if (elem.getTagName().equalsIgnoreCase("guid")) {
                    item.setGuid(getText(elem));
                }
            }
        }
        return item;
    }

    private static String getText(Element elm) {
        Node node = elm.getFirstChild();
        if (!(node instanceof Text)) {
            return null;
        }
        Text text = (Text) node;
        return text.getData().trim();
    }
}

class RSSChannel {

    public RSSChannel() {
        this.title = "";
        this.link = "";
        this.description = "";
    }

    public RSSChannel(String title, String link, String description) {

        this.title = title;
        this.link = link;
        this.description = description;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getTitle() {
        return title;
    }

    public String getLink() {
        return link;
    }

    public String getDescription() {
        return description;
    }

    public List<RSSItem> getItems() {
        return new ArrayList<RSSItem>(items);
    }

    public void addItem(RSSItem item) {
        items.add(item);
    }

    private String title;
    private String link;
    private String description;
    private List<RSSItem> items = new ArrayList<RSSItem>();
}

class RSSItem {

    public RSSItem() {

        this.title = "";
        this.link = "";
        this.description = "";
        this.pubDate = "";
        this.guid = "";
    }

    public RSSItem(String title, String link, String description, String item, String pubDate, String guid) {

        this.title = title;
        this.link = link;
        this.description = description;
        this.pubDate = pubDate;
        this.guid = guid;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public void setPubDate(String pubDate) {
        this.pubDate = pubDate;
    }

    public void setGuid(String guid) {
        this.guid = guid;
    }

    public String getTitle() {
        return title;
    }

    public String getDescription() {
        return description;
    }

    public String getGuid() {
        return guid;
    }

    public String getLink() {
        return link;
    }

    public String getPubDate() {
        return pubDate;
    }

    private String title;
    private String link;
    private String description;
    private String pubDate;
    private String guid;
}