我已经搜索了两天,我可能已经看到了一个可以解决我的问题的解决方案,但我还没有找到一个我理解的解决方案。
我正在关注本教程 - Simple XMLPullParser Tutorial
我知道需要改变的两个方面是
此处 1
public List<Employee> parse(InputStream is) {
XmlPullParserFactory factory = null;
XmlPullParser parser = null;
try {
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
parser = factory.newPullParser();
parser.setInput(is, null);
int eventType = parser.getEventType();
并且 2
List<Employee> employees = null;
try {
XMLPullParserHandler parser = new XMLPullParserHandler();
employees = parser.parse(getAssets().open("employees.xml"));
这是来自工作示例,下面取自我想要实现的目标,删除此
employees = parser.parse(getAssets()。open(“employees.xml”));
我试图得到像
这样的东西网址网址=新网址(“http://www.example.xml”);
URLConnection connection = url.openConnection();
InputStream in = connection.getInputStream();
employees = parser.parse(in);
第一部分我不太确定要改变什么,第二部分我知道我需要添加网址,并打开连接。然后更改employees = parser ...行,但到目前为止没有运气来获得工作响应。
我添加了android.permission.INTERNET。
我还在assets文件夹中添加了我自己的XML文件,这是我要解析的网址的副本,效果很好。
非常感谢任何帮助。
答案 0 :(得分:0)
请在此处查看我的答案。 Android : XmlpullParser exception
另外,请确保
XmlUtils.beginDocument(parser,"results");
“results”是您的xml的第一个节点名称。在你的情况下,它可能是“雇员”
此外,可能无法通过主UI线程访问网络相关服务。
请使用AsyncTask并在doInBackground()方法中添加方法。
private class DownloadFilesTask extends AsyncTask<String, Void, String> {
protected Long doInBackground(String... urls) {
//put your xml parsing code here.
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}