Mp3Info:
package org.xym.model;
public class Mp3Info {
private String id;
private String mp3Name;
private String mp3Size;
private String lrcName;
private String lrcSize;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMp3Name() {
return mp3Name;
}
public void setMp3Name(String mp3Name) {
this.mp3Name = mp3Name;
}
public String getMp3Size() {
return mp3Size;
}
public void setMp3Size(String mp3Size) {
this.mp3Size = mp3Size;
}
public String getLrcName() {
return lrcName;
}
public void setLrcName(String lrcName) {
this.lrcName = lrcName;
}
public String getLrcSize() {
return lrcSize;
}
public void setLrcSize(String lrcSize) {
this.lrcSize = lrcSize;
}
public Mp3Info(String id, String mp3Name, String mp3Size, String lrcName,
String lrcSize) {
super();
this.id = id;
this.mp3Name = mp3Name;
this.mp3Size = mp3Size;
this.lrcName = lrcName;
this.lrcSize = lrcSize;
}
public Mp3Info() {
super();
}
@Override
public String toString() {
return "Mp3Info [id=" + id + ", mp3Name=" + mp3Name + ", mp3Size="
+ mp3Size + ", lrcName=" + lrcName + ", lrcSize=" + lrcSize
+ "]";
}
}
Mp3ListContentHandler:处理下载的xml:
package org.xym.xml;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import org.xym.model.Mp3Info;
public class Mp3ListContentHandler extends DefaultHandler {
public Mp3ListContentHandler(List<Mp3Info> infos) {
super();
this.infos = infos;
}
private List<Mp3Info> infos = null;
public List<Mp3Info> getInfos() {
return infos;
}
public void setInfos(List<Mp3Info> infos) {
this.infos = infos;
}
private Mp3Info mp3Info = null;
private String tagName= null;
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
String temp = new String(ch,start,length);
if(tagName.equals("id")){
mp3Info.setId(temp);
}else if(tagName.equals("mp3.name")){
mp3Info.setMp3Name(temp);
}else if(tagName.equals("mp3.size")){
mp3Info.setMp3Size(temp);
}else if(tagName.equals("lrc.name")){
mp3Info.setLrcName(temp);
}else if(tagName.equals("lrc.size")){
mp3Info.setLrcSize(temp);
}
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if(qName.equals("resource")){
infos.add(mp3Info);
}
tagName = "";
}
@Override
public void startDocument() throws SAXException {
super.startDocument();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
this.tagName = localName;
if(tagName.equals("resource")){
mp3Info = new Mp3Info();
}
}
}
下载xml:
package org.xym.download;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
//通过url下载文件
public class HttpDownLoader {
public String download(String urlStr){
StringBuffer sb = new StringBuffer();
String line = null;
BufferedReader buffer = null;
try{
URL url = new URL(urlStr);
HttpURLConnection urlConn = (HttpURLConnection)url
.openConnection();
buffer = new BufferedReader(new InputStreamReader(urlConn
.getInputStream()));
while((line = buffer.readLine()) != null){
sb.append(line);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
buffer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
activity:
package org.xym.mp3;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xym.download.HttpDownLoader;
import org.xym.model.Mp3Info;
import org.xym.xml.Mp3ListContentHandler;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class Mp3ListActivity extends ListActivity {
private static final int UPDATE = 1;
private static final int ABOUT = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mp3_list);
}
//点击menu按钮后后触发
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.mp3_list, menu);
menu.add(0,UPDATE,1,R.string.mp3list_update);
menu.add(0,ABOUT,2,R.string.mp3list_about);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//用户点击了更新列表按钮
if(item.getItemId() == UPDATE){
String xml = downloadXML("http://58.252.224.148:8080/mp3/resource.xml");
parse(xml);
}else if(item.getItemId() == ABOUT){
};
return super.onOptionsItemSelected(item);
}
private String downloadXML(String urlStr){
HttpDownLoader httpDownLoader = new HttpDownLoader();
String result = httpDownLoader.download(urlStr);
return result;
}
private List<Mp3Info> parse(String xmlStr){
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
try{
XMLReader xmlReader = saxParserFactory.newSAXParser().getXMLReader();
List<Mp3Info> infos = new ArrayList<Mp3Info>();
Mp3ListContentHandler mp3ListContentHandler = new Mp3ListContentHandler(infos);
xmlReader.setContentHandler(mp3ListContentHandler);
xmlReader.parse(new InputSource(new StringReader(xmlStr)));
for(Iterator iterator = infos.iterator();iterator.hasNext();){
Mp3Info mp3Info = (Mp3Info) iterator.next();
System.out.println(mp3Info);
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}
}