public class RSS_check { public RSS_check() { } private enum FeedType { item, title, description, link, pubdate; } public FeedList readRSS(String urlAddress) { FeedList feed = null; try { boolean isFeedHeader = true; String description = ""; String title = ""; String link = ""; String pubdate = ""; XMLInputFactory inputFactory = XMLInputFactory.newInstance(); InputStream in = read(urlAddress); XMLEventReader eventReader = inputFactory.createXMLEventReader(in); while (eventReader.hasNext()) { XMLEvent event = eventReader.nextEvent(); if (event.isStartElement()) { String localPart = event.asStartElement().getName().getLocalPart(); FeedType st = FeedType.valueOf(localPart.toUpperCase()); switch (st) { case item: if (isFeedHeader) { isFeedHeader = false; feed = new FeedList(title, link, description, pubdate); } event = eventReader.nextEvent(); break; case title: title = getCharacterData(event, eventReader); break; case description: description = getCharacterData(event, eventReader); break; case link: link = getCharacterData(event, eventReader); break; case pubdate: pubdate = getCharacterData(event, eventReader); break; } } } } catch (XMLStreamException e) { throw new RuntimeException(e); } return feed; } private String getCharacterData(XMLEvent event, XMLEventReader eventReader) throws XMLStreamException { String result = ""; event = eventReader.nextEvent(); if (event instanceof Characters) { result = event.asCharacters().getData(); } return result; } private InputStream read(String _url) { try { URL rssUrl = new URL(_url); return rssUrl.openStream(); } catch (IOException e) { throw new RuntimeException(e); } } }