Ejemplo n.º 1
0
  @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;
  }