Convert BufferedReader To InputStream

3.1k Views Asked by At

I just finished writing a bunch of code that works fine when reading from internal resource :))))

try {
        SeriesDataXMLPullParserHandler seriesDataXmlPullParserHandler = new SeriesDataXMLPullParserHandler();
        entries = seriesDataXmlPullParserHandler.parse(getAssets().open("series_box.xml"));
    } catch (IOException e) {
        e.printStackTrace();
        Log.d("errorOpeningSeries", e.getMessage());
    }
    Collections.sort(entries, new Comparator<Entry>() {
        @Override
        public int compare(Entry entryOne, Entry entryTwo) {
            return (entryOne.getSeriesName().compareTo(entryTwo.getSeriesName()));
        }
    });
    listView.setAdapter(new MyAdapter(this, R.id.details_SeriesName, entries));

"SeriesDataXMLPullParserHandler" class parse data from xml file that uses InputStream as argument

here is "SeriesDataXMLPullParserHandler" class

public class SeriesDataXMLPullParserHandler {
List<Entry> entries;
private Entry entry;
private String text;

public SeriesDataXMLPullParserHandler() {
    entries = new ArrayList<>();
}

public List<Entry> getEntries() {
    return entries;
}

public List<Entry> parse(InputStream inputStream) {
    XmlPullParserFactory xmlPullParserFactory = null;
    XmlPullParser xmlPullParser = null;
    try {
        xmlPullParserFactory = XmlPullParserFactory.newInstance();
        xmlPullParserFactory.setNamespaceAware(true);
        xmlPullParser = xmlPullParserFactory.newPullParser();

        xmlPullParser.setInput(inputStream, null);

        int eventType = xmlPullParser.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            String tagname = xmlPullParser.getName();
            switch (eventType) {
                case XmlPullParser.START_TAG:
                    if (tagname.equalsIgnoreCase("series")) {
                        entry = new Entry();
                    }
                    break;

                case XmlPullParser.TEXT:
                    text = xmlPullParser.getText();
                    break;

                case XmlPullParser.END_TAG:
                    if (tagname.equalsIgnoreCase("series")) {
                        entries.add(entry);
                    } else if (tagname.equalsIgnoreCase("id")) {
                        entry.setId(text);
                    } else if (tagname.equalsIgnoreCase("Actors")) {
                        entry.setActors(text);
                    }else if (tagname.equalsIgnoreCase("Genre")) {
                        entry.setGenre(text);
                    } else if (tagname.equalsIgnoreCase("IMDB_ID")) {
                        entry.setImdb_id(text);
                    } else if (tagname.equalsIgnoreCase("Language")) {
                        entry.setLanguage(text);
                    } else if (tagname.equalsIgnoreCase("Network")) {
                        entry.setNetwork(text);
                    } else if (tagname.equalsIgnoreCase("NetworkID")) {
                        entry.setNetwork_id(text);
                    } else if (tagname.equalsIgnoreCase("Overview")) {
                        entry.setOverview(text);
                    } else if (tagname.equalsIgnoreCase("SeriesID")) {
                        entry.setSeriesId(text);
                    } else if (tagname.equalsIgnoreCase("SeriesName")) {
                        entry.setSeriesName(text);
                    } 
                    break;

                default:
                    break;
            }
            eventType = xmlPullParser.next();
        }

    } catch (XmlPullParserException | IOException e) {
        e.printStackTrace();
    }

    return entries;
}

}

but the problem is when I want to get data from server, it comes in "InputStreamReader" type

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));

the question is how do I change the type of "BufferedReader" to "InputStream" for parsing data??? or the best way to do such a thing ??? sorry for bad english :)

0

There are 0 best solutions below