首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

android解析xml文件 Android DOM解析XML之环球实时地震信息列表

2013-10-14 
android解析xml文件 Android DOM解析XML之全球实时地震信息列表public class HttpGet extends Activity { 

android解析xml文件 Android DOM解析XML之全球实时地震信息列表

public class HttpGet extends Activity {  private ListView list;  EarthQuakeInfo selectedQuake;  ArrayAdapter adapter;  ArrayList infoList=new ArrayList();  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  this.setContentView(R.layout.main);  //设置listView的内容为infoList  list=(ListView)this.findViewById(R.id.list);  adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,infoList);  //设置ListView的适配器为adapter  list.setAdapter(adapter);  getInfo();//获得infoList的具体内容。  }  private void getInfo(){  URL url;  try{  String feed=getString(R.string.feed);  url=new URL(feed);  URLConnection connection=url.openConnection();  HttpURLConnection httpConnection=(HttpURLConnection)connection;  int responseCode=httpConnection.getResponseCode();  if(responseCode==HttpURLConnection.HTTP_OK){  InputStream in=httpConnection.getInputStream();  DocumentBuilderFactory dbfactory=DocumentBuilderFactory.newInstance();  DocumentBuilder db=dbfactory.newDocumentBuilder();  //解析地震feed  Document dom=db.parse(in);  Element docEle=dom.getDocumentElement();  //清空旧的地震信息  infoList.clear();  //获得地震信息列表  NodeList nl=docEle.getElementsByTagName("entry");  if(nl!=null&&nl.getLength()>0){  for(int i=0;i<nl.getLength();i++){  Element entry=(Element)nl.item(i);  Element title=(Element)entry.getElementsByTagName("title").item(0);  Element geo=(Element)entry.getElementsByTagName("georss:point").item(0);  Element when=(Element)entry.getElementsByTagName("updated").item(0);   String details=title.getFirstChild().getNodeValue();  String point=geo.getFirstChild().getNodeValue();  String date=when.getFirstChild().getNodeValue();  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");  Date qdate=new GregorianCalendar(0,0,0).getTime();  try{  qdate=sdf.parse(date);  }catch (Exception e) {  e.printStackTrace();// TODO: handle exception  }  String[] location=point.split(" ");  Location loc=new Location("dummyGPS");  loc.setLatitude(Double.parseDouble(location[0]));  loc.setLongitude(Double.parseDouble(location[1]));  String magnitudeString=details.split(" ")[1];  int end=magnitudeString.length()-1;  double magnitude=Double.parseDouble(magnitudeString.substring(0,end));  details=details.split(",")[1].trim();  EarthQuakeInfo info=new EarthQuakeInfo(qdate,details,loc,magnitude);  //处理地震信息  newEntry(info);  }  }  }  }catch (Exception e) {  // TODO: handle exception  }  }  private void newEntry(EarthQuakeInfo info){  infoList.add(info);  adapter.notifyDataSetChanged();  }  public class EarthQuakeInfo{  public Date date;  public String details;  public Location location;  public double magnitude;  public EarthQuakeInfo(Date d,String de,Location loc,double mag){  this.date=d;  this.details=de;  this.location=loc;  this.magnitude=mag;  }  @Override  public String toString(){  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd' 'hh:mm:ss");  return sdf.format(date)+"\n里氏"+magnitude+"级"+details+"地点"+location;  }  }  }

热点排行