`
xuyuanshuaaa
  • 浏览: 394806 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

android 使用DOM解析xml

阅读更多
美国地震信息网http://earthquake.usgs.gov/earthquakes/catalogs/1day-M2.5.xml

public class EarthquakeList extends Activity {
 
  ListView list;
  EarthQuakeInfo selectedQuake;

  ArrayAdapter<EarthQuakeInfo> adapter;
  ArrayList<EarthQuakeInfo> infoList = new ArrayList<EarthQuakeInfo>();
 
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
   
    setContentView(R.layout.main); //设置用户界面

    list = (ListView)this.findViewById(R.id.list);
   
    //设置ListView的内容为infoList
    adapter = new ArrayAdapter<EarthQuakeInfo>(this,android.R.layout.simple_list_item_1,infoList);
    //设置ListView的适配器为adapter
    list.setAdapter(adapter);

    getInfo(); //获得infoList的具体内容,这样ListView才有地震信息可以显示
  }
 
  /** 刷新数据,获得最新地址信息 */
  private void getInfo() {
  // 获得XML
  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 (ParseException e) {
            e.printStackTrace();
          }

          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) {
    e.printStackTrace();
  }
  }

  //新的地震信息
  private void newEntry(EarthQuakeInfo info) {
  // 将新的地址信息条目加入列表中
  infoList.add(info);

  // 通知array adapter
  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) {
        date = d;
        details = de;
        location = loc;
        magnitude = mag;
      }

      @Override
      public String toString() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd' 'hh:mm:ss");
        return sdf.format(date)
            + "\n 里氏"
            + magnitude
            + "级 \n "
            + details;
      }
    }
}
分享到:
评论

相关推荐

    Android Dom解析XML

    总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...

    android Dom解析xml文件

    本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...

    android上使用DOM解析XML

    下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,因为DOM解析器是Java标准库的一部分,已经包含在Android SDK中。这意味着你可以...

    Android使用DOM方式解析XML

    在Android项目中,我们需要导入以下库以使用DOM解析XML: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c....

    java使用dom解析xml

    Java 使用 DOM 解析 XML 是一种常见的处理 XML 文档的方式,DOM 即 Document Object Model,它是一种 W3C 标准的 API,用于处理 XML 和 HTML 文档。在 Java 中,DOM 解析允许开发者将整个 XML 文件加载到内存中,...

    DOM解析xml文件实例讲解

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

    经典的DOM解析XML范例

    在提供的代码示例中,展示了如何使用DOM解析XML文件`library.xml`。首先,通过`DocumentBuilderFactory`创建解析器,然后解析文件,得到`Document`对象。接着,获取根元素`books`,并通过`getChildNodes()`遍历所有...

    Android应用源码之28.使用DOM和pull解析XML.zip

    使用DOM解析XML的基本步骤如下: 1. 加载XML文件:使用`DocumentBuilderFactory`创建`DocumentBuilder`,然后调用`parse()`方法加载XML。 2. 构建DOM树:`DocumentBuilder`会将XML转换为`Document`对象。 3. 遍历DOM...

    android dom方式解析xml

    本文将深入探讨在Android中如何使用DOM方式解析XML。 首先,我们需要理解DOM解析的基本原理。DOM解析器会将整个XML文件加载到内存中,形成一个节点树。这棵树的根节点代表整个XML文档,而其他节点则表示文档中的...

    android下解析xml文件的demo

    在Android应用中,我们通常使用两种方式来解析XML:DOM(Document Object Model)解析器和SAX(Simple API for XML)解析器。 1. DOM解析: DOM解析器将整个XML文件加载到内存中,形成一个树形结构,可以方便地遍历...

    Dom方式解析XML

    在Android Studio中,我们经常使用DOM解析XML资源文件,如布局文件。例如,读取XML配置文件以获取应用程序设置: - 创建XML配置文件(如`config.xml`)放在`res/raw`目录下。 - 使用上述DOM解析方法读取并处理...

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

    在提供的`DomXmlOperate`示例中,可能包含了如何使用DOM解析XML并绑定到View(如使用ButterKnife库)的代码。 2. PULL解析: PULL解析器是事件驱动的,它以拉取(pull)的方式逐个处理XML元素,不需要一次性加载...

    android版本更新与dom解析xml

    本节将深入探讨Android版本更新的过程以及DOM解析XML的技术。 一、Android版本更新 1. 版本跟进:Android系统经历了从早期的API Level 1到目前的API Level 30等多个版本。每个新版本通常包含对性能、安全性和用户...

    android dom解析全世界地区城市xml并存入数据库

    android 使用dom解析全世界地区城市xml文件并存入数据库

    android 解析XML文件 生成XML文件

    二、DOM解析XML文件 DOM(Document Object Model)将整个XML文档加载到内存中,形成一棵树形结构,方便遍历和操作。对于小规模的XML文件,DOM解析器是一个不错的选择。Java和Kotlin的DOM解析步骤如下: 1. 加载XML...

    Android 创建与解析XML Dom4j方式

    本文将深入探讨如何使用Dom4j库在Android环境中创建和解析XML文档。 首先,了解XML(eXtensible Markup Language)的基本概念。XML是一种标记语言,它允许我们在文档中嵌入结构化数据。它的主要优点是数据与显示...

    android使用SAX解析xml

    - `xmlSAXPaserDemo`可能是一个包含示例代码的Android项目,用于演示如何实际使用SAX解析XML文件。 - 项目中可能包括网络请求模块、SAX解析器处理类以及展示解析结果的UI部分。 通过以上步骤,开发者可以在...

    android使用pull 解析xml文件源码

    pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...

    Android开发之DOM解析xml文件的方法

    本文实例讲述了Android中DOM解析xml文件的方法。分享给大家供大家参考,具体如下: 一、在assets文件中写xml文件 &lt;?xml version=1.0 encoding=UTF-8?&gt; 李明 &lt;age&gt;30 李向梅 &lt;age&gt;25 二、在...

    android中使用PULL解析XML

    本文将深入探讨如何在Android中使用PULL解析器(Pull Parser)来解析XML文档,这是一种轻量级且高效的解析方式。 **PULL解析器概述** PULL解析器(Pull Parsing)是一种事件驱动的解析模型,它不需要完整的XML文档...

Global site tag (gtag.js) - Google Analytics