我有一个从URLConnection读取的XML文件。文件随着时间的推移而增长。我想读取文件的前100k,今天文件是1.3MB。然后我想解析我读过的部分。我该怎么做呢?
(From scratch)
int length = 100*1024;
byte[] buf = new byte[length];
urlConnection.getInputStream().read(buf,0,length);
StringBufferInputStream in = new StringBufferInputStream(new String(buf));
new SAXParser().parse(in,myHandler);
据我所知,您感兴趣的不仅仅是100k的流,而是可以从中提取所需数据的100k流。这意味着Peter建议的100k是行不通的,因为它可能会导致格式不良好的XML。
相反,我建议使用StAX解析器,它将使您能够直接从流中读取和解析XML,并能够在达到100k(或接近)限制时停止。
要了解更多信息,请查看XMLStreamReader接口(以及有关其使用的示例)。例如,你可以循环到名称为"result"的START_ELEMENT
,然后使用方法getTextCharacters(int sourceStart, char[] target, int targetStart, int length)
指定100k作为缓冲区大小。
正如你提到的Android目前没有可用的StAX解析器。但是,它确实具有具有类似功能的XmlPullParser。