zoukankan      html  css  js  c++  java
  • (网络数据交互)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实例,也就是获取到节点列表,再获取到内容即可。

  • 相关阅读:
    HTTP——学习笔记(3)
    HTTP——状态码
    HTTP——学习笔记(2)
    HTTP——学习笔记(1)
    Sqlserver 存储过程
    Sqlserver 函数(例子)
    Sqlserver 函数
    sqlserver字段类型
    redis入门笔记(2)
    redis入门笔记(1)
  • 原文地址:https://www.cnblogs.com/CVstyle/p/6368819.html
Copyright © 2011-2022 走看看