使用 XML Pull 解析 XML,使用xmlpull解析
投稿于 被查看 44933 次 评论:266
使用 XML Pull 解析 XML,使用xmlpull解析
<无详细内容>1.XmlPullParserActivity.java
package com.javacodegeeks.android.xml.pull; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import android.app.Activity; import android.os.Bundle; import android.util.Log; import com.javacodegeeks.android.xml.pull.model.Image; import com.javacodegeeks.android.xml.pull.model.Movie; public class XmlPullParserActivity extends Activity { private static final String xmlUrl = "http://dl.dropbox.com/u/7215751/JavaCodeGeeks/AndroidFullAppTutorialPart03/Transformers+2007.xml"; private final String TAG = getClass().getSimpleName(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { List<Movie> movies = parseFromUrl(); for (Movie movie : movies) { Log.d(TAG, "Movie:"+movie); } } catch (Exception e) { Log.e(TAG, "Error while parsing", e); } } private List<Movie> parseFromUrl() throws XmlPullParserException, IOException { List<Movie> moviesList = null; XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(false); XmlPullParser parser = factory.newPullParser(); URL url = new URL(xmlUrl); URLConnection ucon = url.openConnection(); InputStream is = ucon.getInputStream(); parser.setInput(is, null); parser.nextTag(); parser.nextTag(); parser.nextTag(); parser.nextTag(); parser.nextText(); parser.nextTag(); moviesList = parseMovies(parser); return moviesList; } private List<Movie> parseMovies(XmlPullParser parser) throws XmlPullParserException, IOException { List<Movie> moviesList = new LinkedList<Movie>(); Log.d(TAG, "parseMovies tag " + parser.getName()); while (parser.nextTag() == XmlPullParser.START_TAG) { Log.d(TAG, "parsing movie"); Movie movie = parseMovie(parser); moviesList.add(movie); } return moviesList; } private Movie parseMovie(XmlPullParser parser) throws XmlPullParserException, IOException { Movie movie = new Movie(); Log.d(TAG, "parseMovie tag " + parser.getName()); while (parser.nextTag() == XmlPullParser.START_TAG) { if (parser.getName().equals("name")) { movie.name = parser.nextText(); } else if (parser.getName().equals("score")) { movie.score = parser.nextText(); } else if (parser.getName().equals("images")) { Image image = parseImage(parser); movie.imagesList = new ArrayList<Image>(); movie.imagesList.add(image); } else if (parser.getName().equals("version")) { movie.version = parser.nextText(); } else { parser.nextText(); } } return movie; } private Image parseImage(XmlPullParser parser) throws XmlPullParserException, IOException { Image image = new Image(); Log.d(TAG, "parseImage tag " + parser.getName()); while (parser.nextTag() == XmlPullParser.START_TAG) { if (parser.getName().equals("image")) { image.type = parser.getAttributeValue(null, "type"); image.url = parser.getAttributeValue(null, "url"); image.size = parser.getAttributeValue(null, "size"); image.width = Integer.parseInt(parser.getAttributeValue(null, "width")); image.height = Integer.parseInt(parser.getAttributeValue(null, "height")); } parser.next(); } return image; } }
2.Movie.java
package com.javacodegeeks.android.xml.pull.model; import java.util.ArrayList; public class Movie { public String score; public String popularity; public boolean translated; public boolean adult; public String language; public String originalName; public String name; public String type; public String id; public String imdbId; public String url; public String votes; public String rating; public String certification; public String overview; public String released; public String version; public String lastModifiedAt; public ArrayList<Image> imagesList; }
用户评论