我正在尝试从我的网络服务器读取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(没有这样的文件或目录)
为什么我遇到这个问题以及如何纠正它?
答案 0 :(得分: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 );
正如您所看到的,稍后,感谢Java流API,您可以轻松调整代码逻辑以处理文件内容。这是由于类DocumentBuilder
中的解析方法过载。
答案 1 :(得分: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());
}
注意:我只是在这里输入,可能存在语法错误。
答案 2 :(得分:0)
您需要使用URL对象读取文件。例如,尝试这样的事情:
URL facultyURL = new URL("http://example.com/feed.xml");
InputStream is = facultyURL.openStream();