Xmlpull Java,解析互联网上的xml文件

时间:2013-06-18 10:20:31

标签: java xml parsing xmlpullparser

我正在测试Xmlpull,我实际上在我的计算机上本地解析了xml。 现在,我想解析一个互联网上的XML文件,文件是:

http://api.androidhive.info/pizza/?format=xml

但我找不到将数据流式传输到XmlPullParser对象的方法,请给我一些关于如何解决这个问题的一般指导原则?

我认为另一种方法是通过java io下载xml文件然后在本地解析文件,但这并不是我想要实现的。我想在互联网上直接解析xml文件,而不在本地存储副本。

无论如何,请告诉我最佳做法。

谢谢,希望一切都很清楚

1 个答案:

答案 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获取编码,而不是使用固定的编码。

但它应该提出这个想法。