2013-06-18 61 views
0

我正在測試Xmlpull,我實際上在我的計算機上本地解析了xml。 現在,我想分析互聯網上的XML文件,該文件是:Xmlpull Java,解析Internet上的xml文件

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

,但我不能找到一種方法將數據傳送到XmlPullParser對象,請給我一些一般準則如何解決這個問題?

我認爲的另一種方法是通過java io下載xml文件,然後在本地解析文件,但這不完全是我試圖實現的。我想直接在互聯網上解析xml文件,而不在本地存儲副本。

反正請告訴我最佳做法。

感謝,希望一切都清楚了

回答

1

想必你的意圖是要做到這一點與Android的API,所以請酌情翻譯。

在常規Java,存在XmlStreamReader爲StAX的解析,並且它可與InputStream從被實例化,像這樣:

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中獲得編碼,而不是使用固定的編碼。

但它應該給出這個想法。