我正在测试Xmlpull,我实际上在我的计算机上本地解析了xml。 现在,我想解析一个互联网上的XML文件,文件是:
http://api.androidhive.info/pizza/?format=xml
但我找不到将数据流式传输到XmlPullParser对象的方法,请给我一些关于如何解决这个问题的一般指导原则?
我认为另一种方法是通过java io下载xml文件然后在本地解析文件,但这并不是我想要实现的。我想在互联网上直接解析xml文件,而不在本地存储副本。
无论如何,请告诉我最佳做法。谢谢,希望一切都很清楚
答案 0 :(得分:1)
据推测,您的意图是使用Android API执行此操作,因此请根据需要进行翻译。
在普通Java中,StAX解析有XmlStreamReader
,可以使用InputStream
中的URLConnnection
进行实例化,如下所示:
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
public class ParseStream {
public static void main(String[] args) throws Exception {
URLConnection connection =
new URL("http://api.androidhive.info/pizza/?format=xml").openConnection();
InputStream inputStream = connection.getInputStream();
XMLStreamReader streamReader =
XMLInputFactory.newInstance().createXMLStreamReader(inputStream, "UTF-8");
while (streamReader.hasNext())
if (streamReader.next() == XMLStreamConstants.START_ELEMENT)
System.out.println("START_ELEMENT " + streamReader.getName());
}
}
事实上,我会稍微改进它,例如从URLConnection获取编码,而不是使用固定的编码。
但它应该提出这个想法。