msgs = feed.getMessages();
+ try {
+ for (FeedMessage feedMessage : msgs) {
+ //AttributeSet set = new SimpleAttributeSet();
+ ekit.insertHTML(doc, doc.getLength(),
+ ""
+ + feedMessage.getTitle()
+ + "",
+ 0,
+ 0,
+ HTML.Tag.H3);
+// ekit.insertHTML(doc, doc.getLength(),
+// "
"
+// + feedMessage.getDescription()
+// + "",
+// 0,
+// 0,
+// HTML.Tag.P);
+ ekit.insertHTML(doc, doc.getLength(),
+ "
",
+ 0,
+ 0,
+ null);
+ }
+ doc.insertString(0, "", null);
+ } catch (BadLocationException ex) {
+ Exceptions.printStackTrace(ex);
+ } catch (IOException ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ }
+ });
+ } catch (Exception ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ }
+ });
+ t.start();
+ }
+
+ @SuppressWarnings("null")
+ public Feed readFeed() {
+ Feed feed = null;
+ try {
+
+ boolean isFeedHeader = true;
+ // Set header values intial to the empty string
+ String description = "";
+ String title = "";
+ String link = "";
+ String language = "";
+ String copyright = "";
+ String author = "";
+ String pubdate = "";
+ String guid = "";
+
+ // First create a new XMLInputFactory
+ XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ // Setup a new eventReader
+ InputStream in = read();
+ XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
+ // Read the XML document
+ while (eventReader.hasNext()) {
+
+ XMLEvent event = eventReader.nextEvent();
+
+ if (event.isStartElement()) {
+ if (event.asStartElement().getName().getLocalPart() != null && event.asStartElement().getName().getLocalPart().equals(ITEM)) {
+ if (isFeedHeader) {
+ isFeedHeader = false;
+ feed = new Feed(title, link, description, language,
+ copyright, pubdate);
+ }
+ event = eventReader.nextEvent();
+ continue;
+ }
+
+ if (event.asStartElement().getName().getLocalPart() != null && event.asStartElement().getName().getLocalPart().equals(TITLE)) {
+ event = eventReader.nextEvent();
+ title = event.asCharacters().getData();
+ continue;
+ }
+ if (event.asStartElement().getName().getLocalPart() != null && event.asStartElement().getName().getLocalPart().equals(DESCRIPTION)) {
+ event = eventReader.nextEvent();
+ description = event.asCharacters().getData();
+ continue;
+ }
+
+ if (event.asStartElement().getName().getLocalPart() != null && event.asStartElement().getName().getLocalPart().equals(LINK)) {
+ event = eventReader.nextEvent();
+ //System.out.println("Teh hack: " + event.toString() + event.getClass());
+ Object chars = event.asCharacters();
+ if (chars instanceof javax.xml.stream.events.Characters) {
+ javax.xml.stream.events.Characters jchars = (javax.xml.stream.events.Characters) chars;
+ link = jchars.getData();
+ } else {
+ link = event.asCharacters().getData();
+ }
+ continue;
+ }
+
+ if (event.asStartElement().getName().getLocalPart() != null && event.asStartElement().getName().getLocalPart().equals(GUID)) {
+ event = eventReader.nextEvent();
+ guid = event.asCharacters().getData();
+ continue;
+ }
+ if (event.asStartElement().getName().getLocalPart() != null && event.asStartElement().getName().getLocalPart().equals(LANGUAGE)) {
+ event = eventReader.nextEvent();
+ language = event.asCharacters().getData();
+ continue;
+ }
+ if (event.asStartElement().getName().getLocalPart() != null && event.asStartElement().getName().getLocalPart().equals(AUTHOR)) {
+ event = eventReader.nextEvent();
+ author = event.asCharacters().getData();
+ continue;
+ }
+ if (event.asStartElement().getName().getLocalPart() != null && event.asStartElement().getName().getLocalPart().equals(PUB_DATE)) {
+ event = eventReader.nextEvent();
+ pubdate = event.asCharacters().getData();
+ continue;
+ }
+ if (event.asStartElement().getName().getLocalPart() != null && event.asStartElement().getName().getLocalPart().equals(COPYRIGHT)) {
+ event = eventReader.nextEvent();
+ copyright = event.asCharacters().getData();
+ continue;
+ }
+ } else if (event.isEndElement()) {
+ if (event.asEndElement().getName().getLocalPart() != null && event.asEndElement().getName().getLocalPart().equals(ITEM)) {
+ FeedMessage message = new FeedMessage();
+ message.setAuthor(author);
+ message.setDescription(description);
+ message.setGuid(guid);
+ message.setLink(link);
+ message.setTitle(title);
+ feed.getMessages().add(message);
+ event = eventReader.nextEvent();
+ continue;
+ }
+ }
+ }
+ } catch (XMLStreamException e) {
+ throw new RuntimeException(e);
+ }
+ return feed;
+
+ }
+
+ private InputStream read() {
+ try {
+ return url.openStream();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}