public Event[] readEvents() {
		InputSource source = new InputSource(this);
		Document doc = DOMUtils.documentFromInputSource(source);
		if (!validRSS(doc)) {
			return new Event[0];
		}
		List<Event> events = new ArrayList<Event>();
		NodeList channelChildren = DOMUtils.getFirstNamedChild(doc.getDocumentElement(), "channel").getChildNodes();
		for (int i = 0; i < channelChildren.getLength(); i++) {
			Node node = channelChildren.item(i);
			if (node instanceof Element && node.getNodeName().equals("item")) {
				Event event = EventFactory.createEvent((Element)node, sourceHost);
				if (event != null) {
					events.add(event);
				}
			}
		}
		return events.toArray(new Event[0]);
	}