`
心雨心
  • 浏览: 354991 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
  1. public class HttpGet extends Activity {   
  2.   
  3.   private ListView list;   
  4.   
  5.   EarthQuakeInfo selectedQuake;   
  6.   
  7.   ArrayAdapter adapter;   
  8.   
  9.   ArrayList infoList=new ArrayList();   
  10.   
  11.   @Override  
  12.   
  13.   protected void onCreate(Bundle savedInstanceState) {   
  14.   
  15.   super.onCreate(savedInstanceState);   
  16.   
  17.   this.setContentView(R.layout.main);   
  18.   
  19.   //设置listView的内容为infoList   
  20.   
  21.   list=(ListView)this.findViewById(R.id.list);   
  22.   
  23.   adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,infoList);   
  24.   
  25.   //设置ListView的适配器为adapter   
  26.   
  27.   list.setAdapter(adapter);   
  28.   
  29.   getInfo();//获得infoList的具体内容。   
  30.   
  31.   }   
  32.   
  33.   private void getInfo(){   
  34.   
  35.   URL url;   
  36.   
  37.   try{   
  38.   
  39.   String feed=getString(R.string.feed);   
  40.   
  41.   url=new URL(feed);   
  42.   
  43.   URLConnection connection=url.openConnection();   
  44.   
  45.   HttpURLConnection httpConnection=(HttpURLConnection)connection;   
  46.   
  47.   int responseCode=httpConnection.getResponseCode();   
  48.   
  49.   if(responseCode==HttpURLConnection.HTTP_OK){   
  50.   
  51.   InputStream in=httpConnection.getInputStream();   
  52.   
  53.   DocumentBuilderFactory dbfactory=DocumentBuilderFactory.newInstance();   
  54.   
  55.   DocumentBuilder db=dbfactory.newDocumentBuilder();   
  56.   
  57.   //解析地震feed   
  58.   
  59.   Document dom=db.parse(in);   
  60.   
  61.   Element docEle=dom.getDocumentElement();   
  62.   
  63.   //清空旧的地震信息   
  64.   
  65.   infoList.clear();   
  66.   
  67.   //获得地震信息列表   
  68.   
  69.   NodeList nl=docEle.getElementsByTagName("entry");   
  70.   
  71.   if(nl!=null&&nl.getLength()>0){   
  72.   
  73.   for(int i=0;i<nl.getLength();i++){   
  74.   
  75.   Element entry=(Element)nl.item(i);   
  76.   
  77.   Element title=(Element)entry.getElementsByTagName("title").item(0);   
  78.   
  79.   Element geo=(Element)entry.getElementsByTagName("georss:point").item(0);   
  80.   
  81.   Element when=(Element)entry.getElementsByTagName("updated").item(0);   
  82.   
  83.     
  84.   
  85.   String details=title.getFirstChild().getNodeValue();   
  86.   
  87.   String point=geo.getFirstChild().getNodeValue();   
  88.   
  89.   String date=when.getFirstChild().getNodeValue();   
  90.   
  91.   SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");   
  92.   
  93.   Date qdate=new GregorianCalendar(0,0,0).getTime();   
  94.   
  95.   try{   
  96.   
  97.   qdate=sdf.parse(date);   
  98.   
  99.   }catch (Exception e) {   
  100.   
  101.   e.printStackTrace();// TODO: handle exception   
  102.   
  103.   }   
  104.   
  105.   String[] location=point.split(" ");   
  106.   
  107.   Location loc=new Location("dummyGPS");   
  108.   
  109.   loc.setLatitude(Double.parseDouble(location[0]));   
  110.   
  111.   loc.setLongitude(Double.parseDouble(location[1]));   
  112.   
  113.   String magnitudeString=details.split(" ")[1];   
  114.   
  115.   int end=magnitudeString.length()-1;   
  116.   
  117.   double magnitude=Double.parseDouble(magnitudeString.substring(0,end));   
  118.   
  119.   details=details.split(",")[1].trim();   
  120.   
  121.   EarthQuakeInfo info=new EarthQuakeInfo(qdate,details,loc,magnitude);   
  122.   
  123.   //处理地震信息   
  124.   
  125.   newEntry(info);   
  126.   
  127.   }   
  128.   
  129.   }   
  130.   
  131.   }   
  132.   
  133.   }catch (Exception e) {   
  134.   
  135.   // TODO: handle exception   
  136.   
  137.   }   
  138.   
  139.   }   
  140.   
  141.   private void newEntry(EarthQuakeInfo info){   
  142.   
  143.   infoList.add(info);   
  144.   
  145.   adapter.notifyDataSetChanged();   
  146.   
  147.   }   
  148.   
  149.   public class EarthQuakeInfo{   
  150.   
  151.   public Date date;   
  152.   
  153.   public String details;   
  154.   
  155.   public Location location;   
  156.   
  157.   public double magnitude;   
  158.   
  159.   public EarthQuakeInfo(Date d,String de,Location loc,double mag){   
  160.   
  161.   this.date=d;   
  162.   
  163.   this.details=de;   
  164.   
  165.   this.location=loc;   
  166.   
  167.   this.magnitude=mag;   
  168.   
  169.   }   
  170.   
  171.   @Override  
  172.   
  173.   public String toString(){   
  174.   
  175.   SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd' 'hh:mm:ss");   
  176.   
  177.   return sdf.format(date)+"\n里氏"+magnitude+"级"+details+"地点"+location;   
  178.   
  179.   }   
  180.   
  181.   }   
  182.   
  183.   }  
分享到:
评论
1 楼 zhao1111 2012-09-12  
请问楼主哪里提供地震的xml文件啊

相关推荐

    android Dom解析xml文件

    在Android开发中,XML文件广泛用于存储数据、配置和布局信息。DOM(Document Object Model)解析是处理XML文件的一种常用方法。DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点操作来...

    android 解析XML文件 生成XML文件

    本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 一、SAX解析XML文件 SAX(Simple API for XML)是一种事件驱动的解析器,它不会一...

    Android 解析xml文件

    1. **DOM解析器**:Document Object Model(DOM)解析器将整个XML文件加载到内存中,形成一个树形结构,便于对整个文档进行遍历。但是,对于大型XML文件,DOM解析器可能会消耗大量内存。 2. **SAX解析器**:Simple ...

    android上使用DOM解析XML

    总结来说,Android上使用DOM解析XML是一种常见且强大的方法,适用于处理小到中等大小的XML文件。通过理解DOM模型和相应的API,开发者可以高效地解析XML数据,为应用程序提供丰富的信息处理能力。然而,对于大型XML...

    Android XML解析(DOM、PULL、SAX三种方式)

    总结来说,DOM解析适合小规模、需频繁查询的XML文件;PULL解析适用于处理大型XML文件,节省内存;SAX解析则更注重内存效率,适用于流式处理。在实际开发中,开发者应根据项目需求选择合适的XML解析方式。而...

    XML解析之DOM

    在"XML解析之DOM"这一主题中,我们将深入探讨DOM解析器如何工作,以及如何通过DOM API获取XML文件中的信息。DOM解析器将整个XML文档加载到内存中,形成一个节点树,每个元素、属性、文本等内容都对应一个节点。这种...

    Android解析XML文件

    本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:...

    Dom方式解析XML

    **正文** XML(eXtensible Markup Language)...通过理解DOM解析的基本步骤和注意事项,开发者可以有效地读取、解析并利用XML文件中的信息。在实际项目中,根据具体需求和文件大小,选择合适的解析方式是非常重要的。

    Android使用DOM方式解析XML

    本篇文章将深入探讨如何使用DOM(文档对象模型)解析XML文件,并将其内容显示在应用程序的用户界面上。 首先,理解DOM解析的基本概念至关重要。DOM是一种标准,允许程序以树形结构访问和操作XML文档的全部内容。它...

    dom4j解析xml详解

    - **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...

    解析XML的dom、sax和dom4j的jar包

    DOM适合处理小型XML文件,因为它将整个文件加载到内存中,易于操作;SAX适用于处理大型文件,因为它节省内存,但编程相对复杂;DOM4J则提供了一种综合的解决方案,既方便操作,又相对高效,但需要额外引入jar包。 ...

    android解析xml的4种方法

    使用DOM解析的基本步骤包括创建`DocumentBuilderFactory`,通过`DocumentBuilder`解析XML文件,最后通过`Document`对象进行操作。 2. SAX解析器: SAX(Simple API for XML)是一种基于事件驱动的解析方式。它不会...

    DOM解析xml文件实例讲解

    本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...

    android解析xml实例

    本文通过一个具体的例子介绍了如何使用DOM解析器在Android应用中解析XML文件。这种方法适用于处理相对较小的XML文件,因为它需要将整个XML文档加载到内存中。如果处理大型文件或者有性能要求的应用场景,可能需要...

    DOMParser解析xml

    DOMParser虽然强大,但解析大型XML文件时可能会消耗大量内存和CPU资源。对于这种情况,可以考虑使用SAX(Simple API for XML)或StAX(Streaming API for XML)等基于事件的解析器,它们不需要一次性加载整个文档到...

    DOM解析XML文件例子

    在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...

    Android SAX、DOM、Pull解析xml文件案例讲解

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,特别是在移动应用开发,如Android中,解析XML文件是常见的任务。本篇将详细讲解Android中三种主要的XML解析方式:SAX(Simple API for XML)...

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...

Global site tag (gtag.js) - Google Analytics