来自url.xml的Android Pull Parser

时间:2013-04-08 02:47:09

标签: java android xmlpullparser android-pullparser

我已经搜索了两天,我可能已经看到了一个可以解决我的问题的解决方案,但我还没有找到一个我理解的解决方案。

我正在关注本教程 - 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文件,这是我要解析的网址的副本,效果很好。

非常感谢任何帮助。

1 个答案:

答案 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");
 }
}
相关问题