2012-02-15 4 views
0

Possible Duplicate:
How to read XML response from a URL in java?Использование удаленного XML в файл

Я пытаюсь прочитать файл XML с моего веб-сервера и отображает ее содержимое на ListView, поэтому я читаю файл вроде этого:

File xml = new File("http://example.com/feed.xml"); 
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.parse(xml); 
doc.getDocumentElement().normalize(); 

NodeList mainNode = doc.getElementsByTagName("article"); 
// for loop to populate the list... 

проблема заключается в том, что я получаю эту ошибку:

java.io.FileNotFoundException: /http:/mydomainname.com/feed.xml (No such file or directory)

Почему я с этой проблемой и как ее исправить?

+1

Класс файла не загружается. плюс вы должны использовать [URI] (http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#File%28java.net.URI%29) – bgs

ответ

4

Файл предназначенный для обозначения местных файлов.

Если вы хотите, чтобы указать удаленный URI, проще всего использовать класс URL-адрес

//modified code 
URL url = new URL("http://example.com/feed.xml"); 
URLConnection urlConnection = url.openConnection(); 
InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 

//your code 
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.parse(in); 

Как вы можете видеть, в дальнейшем, благодаря ява потокового APIs, вы можете легко адаптировать код логики для работы с содержимым файла. Это связано с перегрузкой метода анализа в классе DocumentBuilder.

1

Вам нужно использовать HTTPURLConnection, чтобы получить xml в качестве входного потока и передать его DocumentBuilder, оттуда вы можете использовать имеющуюся у вас логику.

DefaultHttpClient client = new DefaultHttpClient(); 
HttpResponse resp = client.execute(yourURL); 

if(resp.getStatusCode == 200) 
{ 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
Document doc = builder.parse(resp.getEntity().getContent()); 
} 

Примечание: Я просто печатаю здесь, могут быть синтаксические ошибки.

0

Вам необходимо прочитать файл, используя объект URL. Например, попробуйте что-то вроде этого:

URL facultyURL = new URL("http://example.com/feed.xml"); 
InputStream is = facultyURL.openStream(); 
+0

факультет? Вы имеете в виду университет? – Snicolas

+0

код, который я опубликовал, - это приложение для средних школ, которое помогает в планировании экзаменов на конец года. – Thorn

Смежные вопросы