Java tutorial
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; }