0

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

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

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

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

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

谢谢,希望一切都清楚

4

1 回答 1

1

大概您的意图是使用 Android API 来做到这一点,因此请酌情翻译。

在纯 Java 中,有XmlStreamReader用于 StAX 解析的,它可以用InputStreamfrom an实例化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 中获取编码,而不是使用固定的编码。

但它应该给出这个想法。

于 2013-06-18T21:59:20.397 回答