From 1ce059dcbb9336e25bc45258605a753f86e8c091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=BCttner?= Date: Wed, 19 Apr 2017 23:48:19 +0200 Subject: [PATCH] Fix parsing when element is between buffers --- .../java/me/toptas/rssconverter/XMLParser.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/library/src/main/java/me/toptas/rssconverter/XMLParser.java b/library/src/main/java/me/toptas/rssconverter/XMLParser.java index 1f2ace0..52b56c3 100644 --- a/library/src/main/java/me/toptas/rssconverter/XMLParser.java +++ b/library/src/main/java/me/toptas/rssconverter/XMLParser.java @@ -26,6 +26,7 @@ class XMLParser extends DefaultHandler { private boolean mParsingTitle = false; private boolean mParsingDescription = false; private boolean mParsingLink = false; + private boolean mParsingSpecialValue = false; private String mElementValue = null; private String mTitle = sEmptyString; @@ -67,6 +68,11 @@ public void startElement(String uri, String localName, String qName, mLink = sEmptyString; } break; + case sPublishDate: + case sUrl: + case sImage: + mParsingSpecialValue = true; + break; } /*if (localName.equals(sItem)) { mRssItem = new RssItem(); @@ -125,12 +131,16 @@ public void endElement(String uri, String localName, String qName) break; case sImage: case sUrl: + mParsingSpecialValue = false; if (mElementValue != null && !mElementValue.isEmpty()) { mImage = mElementValue; + mElementValue = sEmptyString; } break; case sPublishDate: + mParsingSpecialValue = false; mDate = mElementValue; + mElementValue = sEmptyString; break; case sDescription: mParsingDescription = false; @@ -145,6 +155,10 @@ public void endElement(String uri, String localName, String qName) public void characters(char[] ch, int start, int length) throws SAXException { String buff = new String(ch, start, length); + if (mParsingSpecialValue) { + mElementValue = mElementValue + buff; + return; + } if (mElementOn) { if (buff.length() > 2) { mElementValue = buff;