2013-06-18 1 views
0

Я тестирую Xmlpull, я фактически разбирал xml локально на своем компьютере. Теперь я хотел бы разобрать файл XML в Интернете, файл:Xmlpull Java, разбор XML-файла в Интернете

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

, но я не могу найти способ для потоковой передачи данных в объект XmlPullParser, пожалуйста, дайте мне несколько общих рекомендаций по как это решить?

Другой подход, который я думал, заключался в том, чтобы загрузить XML-файл через java io, а затем проанализировать файл локально, но это не совсем то, чего я пытался достичь. Я хотел бы проанализировать 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, а не использовать фиксированную.

Но это должно дать идею.