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;
}
}
}
分享到:
相关推荐
在Android开发中,XML文件广泛用于存储数据、配置和布局信息。DOM(Document Object Model)解析是处理XML文件的一种常用方法。DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点操作来...
DOM解析器将整个XML文件加载到内存中,形成一个树形结构,可以方便地遍历和修改XML文档的任何部分。然而,由于它需要一次性加载整个文件,对于大文件来说可能会消耗大量内存。 在"ReadXMLDemo"中,使用DOM解析的...
本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 一、SAX解析XML文件 SAX(Simple API for XML)是一种事件驱动的解析器,它不会一...
总结来说,Android上使用DOM解析XML是一种常见且强大的方法,适用于处理小到中等大小的XML文件。通过理解DOM模型和相应的API,开发者可以高效地解析XML数据,为应用程序提供丰富的信息处理能力。然而,对于大型XML...
总结来说,DOM解析适合小规模、需频繁查询的XML文件;PULL解析适用于处理大型XML文件,节省内存;SAX解析则更注重内存效率,适用于流式处理。在实际开发中,开发者应根据项目需求选择合适的XML解析方式。而...
在"XML解析之DOM"这一主题中,我们将深入探讨DOM解析器如何工作,以及如何通过DOM API获取XML文件中的信息。DOM解析器将整个XML文档加载到内存中,形成一个节点树,每个元素、属性、文本等内容都对应一个节点。这种...
本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:...
在Android应用开发中,选择DOM还是Pull解析通常取决于XML文件的大小和应用场景。对于小规模的数据交换,DOM解析提供了更简单的接口;而对于大数据量或流式处理,Pull解析更为合适。通过学习和实践这两种解析方式,...
**正文** XML(eXtensible Markup Language)...通过理解DOM解析的基本步骤和注意事项,开发者可以有效地读取、解析并利用XML文件中的信息。在实际项目中,根据具体需求和文件大小,选择合适的解析方式是非常重要的。
本篇文章将深入探讨如何使用DOM(文档对象模型)解析XML文件,并将其内容显示在应用程序的用户界面上。 首先,理解DOM解析的基本概念至关重要。DOM是一种标准,允许程序以树形结构访问和操作XML文档的全部内容。它...
- **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...
在Android开发中,XML文件广泛用于存储数据、配置和布局信息。XML(eXtensible Markup Language)是一种可扩展标记语言,它具有结构清晰、易于读写的特点,非常适合于应用程序间的数据交换。本教程将深入讲解如何在...
本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型)、Pull(拉取解析器)和SAX(简单API for XML),并且会特别强调如何识别文件编码。 首先,DOM解析是将整个XML文件加载到内存中形成一个树形...
使用DOM解析的基本步骤包括创建`DocumentBuilderFactory`,通过`DocumentBuilder`解析XML文件,最后通过`Document`对象进行操作。 2. SAX解析器: SAX(Simple API for XML)是一种基于事件驱动的解析方式。它不会...
本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...
本文通过一个具体的例子介绍了如何使用DOM解析器在Android应用中解析XML文件。这种方法适用于处理相对较小的XML文件,因为它需要将整个XML文档加载到内存中。如果处理大型文件或者有性能要求的应用场景,可能需要...
在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,特别是在移动应用开发,如Android中,解析XML文件是常见的任务。本篇将详细讲解Android中三种主要的XML解析方式:SAX(Simple API for XML)...