Парсер RSS-каналов получает неполные каналы - PullRequest
0 голосов
/ 22 января 2020

У меня есть следующий канал по этой ссылке: http://divination-rsps.com/forums/index.php? / rss / 2-updates.xml / & member_id = 276 & key = 589faebff96def4fbbced7ebe6b02aaf

И я хочу получить последнюю версию сообщения, однако он подхватывает это, когда мне это нужно, игнорируйте это:

<channel>
<title>Updates</title>
<link>
<![CDATA[
http://divination-rsps.com/forums/index.php?/rss/2-updates.xml/&member_id=276&key=589faebff96def4fbbced7ebe6b02aaf
]]>
</link>
<description>updates</description>
<language>en</language>

Вот код для синтаксического анализатора:

 public RssFeed readFeed() {
            RssFeed 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()) {
                        String localPart = event.asStartElement().getName()
                                .getLocalPart();
                        switch (localPart) {
                            case ITEM:
                                if (isFeedHeader) {
                                    isFeedHeader = false;
                                    feed = new RssFeed(title, link, "", "",
                                            "", "");
                                   eventReader.next();
                                }
                                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 GUID:
                                guid = getCharacterData(event, eventReader);
                                break;
                            case LANGUAGE:
                                language = getCharacterData(event, eventReader);
                                break;
                            case AUTHOR:
                                author = getCharacterData(event, eventReader);
                                break;
                            case PUB_DATE:
                                pubdate = getCharacterData(event, eventReader);
                                break;
                            case COPYRIGHT:
                                copyright = getCharacterData(event, eventReader);
                                break;
                        }
                    } else if (event.isEndElement()) {
                        if (event.asEndElement().getName().getLocalPart() == (ITEM)) {
                            FeedMessage message = new FeedMessage();
                            message.setAuthor(author);
                            message.setDescription(description);
                            message.setGuid(guid);
                            message.setLink(link);
                            message.setTitle(title);
                            message.setDate(pubdate);
                            feed.getMessages().add(message);
                            event = eventReader.nextEvent();
                            continue;
                        }
                    }
                }
            } catch (XMLStreamException e) {
                throw new RuntimeException(e);
            }
            return feed;
        }

Кто-нибудь знает способ обойти эту проблему, или, возможно, способ проверить это в тегах элементов в первую очередь

...