2

我刚写完一堆从内部资源读取时工作正常的代码:))))

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”类从使用 InputStream 作为参数的 xml 文件中解析数据

这是“SeriesDataXMLPullParserHandler”类

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;
}

}

但问题是当我想从服务器获取数据时,它是“InputStreamReader”类型的

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

问题是如何将“BufferedReader”的类型更改为“InputStream”以解析数据???还是做这种事情的最好方法???抱歉英语不好:)

4

0 回答 0