(网络数据交互)Android解析Internet中的DOM树数据 “DOM树”
从网络请求回来的数据格式可能是.xml文件格式,常见的有:DOM树结构,下面讲述如何解析。具体可以参考博客文章:http://www.cnblogs.com/shenliang123/archive/2012/05/11/2495252.html

解析方式如下:
if (responseCode == httpURLConnection.HTTP_OK) {
    LogUtil.d(TAG, "refreshEarthquakes::HttpURLConnection.HTTP_OK");
    InputStream in = httpURLConnection.getInputStream();
    DocumentBuilderFactory dbf = DocumentBuilderFactory
            .newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document dom = db.parse(in);
    Element docEle = dom.getDocumentElement();
    quakeData.clear();
    // xml文件的<event>标签的个数
    NodeList nl = docEle.getElementsByTagName("event");
    LogUtil.d(TAG,
            "refreshEarthquakes::nl.getLength=" + nl.getLength());
    if (nl != null && nl.getLength() > 0) {
        // 若对应有1个或多个<event>元素,遍历单个<event>元素;每一个<event>都生成一个Quake实例
        for (int i = 0; i < nl.getLength(); i++) {
            // 对应一个<event>标签元素
            Element entry = (Element) nl.item(i);
            // 获取到名称
            String quakeName = entry.getElementsByTagName("text")
                    .item(0).getTextContent();
            LogUtil.d(TAG, "name=" + quakeName);
            // 获取时间
            String quakeTime = entry.getElementsByTagName("time")
                    .item(0).getTextContent();
            LogUtil.d(TAG, "quakeTime=" + quakeTime);
            // 获取等级
            Node magNode = entry.getElementsByTagName("mag")
                    .item(0);
            String magnitude = magNode.getChildNodes().item(0)
                    .getTextContent();
            double value = Double.parseDouble(magnitude);
            // 获取其下的子节点
            LogUtil.d(TAG, "magnitude = " + magnitude);
            // 生成一个Quake实例
            final Quake quake = new Quake(quakeTime, quakeName,
                    null, value, null);
            handler.post(new Runnable() {
                @Override
                public void run() {
                    addNewQuake(quake);
                }
            });
        }
    }
}
根据标签名获取到节点树,比如上述的节点名:text(但必须保证该节点名是唯一的);另一种方式:通过节点名获取到其下的NodeList实例,也就是获取到节点列表,再获取到内容即可。

(网络数据交互)Android解析Internet中的DOM树数据 “DOM树”的更多相关文章
- android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】
		android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ... 
- 在Winform中直接录入表格数据和在Vue&Elment中直接录入表格数据的比较
		一般来说,录入数据的时候,我们都采用在一个窗体界面中,根据不同内容进行录入,但是有时候涉及主从表的数据录入,从表的数据有时候为了录入方便,也会通过表格控件直接录入.在Winform开发的时候,我们很多 ... 
- android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据
		补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访 ... 
- Android解析中国天气网的Json数据
		在Android开发中.一般的APP都是通过获取server端的数据来更新UI.从server获取到的数据能够是Json.它的数据量要比XML要小,这里解析中国天气网上获取的数据,尽管已经不再更新了. ... 
- C#服务端通过Socket推送数据到Android端App中
		需求: 描述:实时在客户端上获取到哪些款需要补货. 要求: 后台需要使用c#,并且哪些需要补货的逻辑写在公司框架内,客户端采用PDA(即Android客户端 版本4.4) . 用户打开了补货通知页面时 ... 
- Unity3d 与 Objective-C 数据交互,持续更新中
		Unity 3D是用于3D游戏编程的语言,它是一个用C\C++编写的强大的库.而在游戏中经常要接入用OC编写的SDK,这就涉及到了Unity3d 和 OC之间的数据交互.XCode是完成兼容C语言的. ... 
- androidclient和站点数据交互的实现(基于Http协议获取数据方法)
		androidclient一般不直接訪问站点数据库,而是像浏览器一样发送get或者post请求.然后站点返回client能理解的数据格式,client解析这些数据.显示在界面上.经常使用的数据格式是x ... 
- (网络数据交互)Android解析Internet的Json资源文件
		常用的Internet数据解析格式和工具: 网页显示的json数据如下: {"type":"FeatureCollection","metadata& ... 
- 【Android】Intent中使用Extra传递数据
		传值方法一 Intent intent = new Intent(); Bundle bundle = new Bundle(); //该类用作携带数据 bundle.putString(" ... 
随机推荐
- Linux文本分析命令awk的妙用
			基本用法 awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理 awk命令格式如下 awk [-F field-sep ... 
- 将眼底图片生成的txt文件进行格式化处理
			# -*- coding: utf-8 -*- """ 将图片转换生成的txt文件进行格式化处理 """ import os import ... 
- Django中模板使用
			第一步:配置 1.在工程中创建模板目录templates. 2.在settings.py配置文件中修改TEMPLATES配置项的DIRS值:TEMPLATES = [ { 'BACKEND': 'dj ... 
- XNginx  - nginx 集群可视化管理工具
			之前团队的nginx管理,都是运维同学每次去修改配置文件,然后重启,非常不方便,一直想找一个可以方便管理nginx集群的工具,翻遍web,未寻到可用之物,于是自己设计开发了一个. 效果预览 集群gro ... 
- Python_xml
			xml: 可扩展标记语言,用来标记数据,定义数据类型,主要用来传输和存储数据(和json差不多,不同语言或程序之间进行数据交换的协议) ET(xml.etree.ElementTree)中的几个类: ... 
- sparkStreaming序列化问题
			执行sparkSTreaming+kafka 报错如下: org.apache.spark.SparkException: Task not serializable ...... Caused by ... 
- vue 中如何对公共css、 js 方法进行单文件统一管理,全局调用
			1.前言 最近,为公司开发交付的一个后台管理系统项目,我使用了 Vue 框架进行开发实践. 模块化.组件化.工程化的开发体验非常好.良好的 api,优雅的设计,对于工程师非常友好. 但是由于模块比较多 ... 
- BZOJ5291/洛谷P4458/LOJ#2512 [Bjoi2018]链上二次求和 线段树
			原文链接http://www.cnblogs.com/zhouzhendong/p/9031130.html 题目传送门 - LOJ#2512 题目传送门 - 洛谷P4458 题目传送门 - BZOJ ... 
- day 68 django 之api操作  |  jQueryset集合与对象
			我们的orm里面分为: jQueryset集合, 还有对象, 我们的jqueryset集合里面可以有多个对象,这句话的意思就是我们的对象是最小的单位,不可以再拆分了,我们的jQueryset集合就相当 ... 
- day 49-css补充(终结)[浮动和定位]
			老师的笔记: 前情回顾: day49 混乱即阶梯. 1. 前情回顾 HTML HTTP和HTML 文档机构 <!Doctype html> HTML head <meta> & ... 
