zoukankan      html  css  js  c++  java
  • android 解析xml

    android下使用DocumentBuilder 解析xml时,有不少坑,主要是遍历子节点时要注意。

    假设有如下xml文件

    <GuessStock>
    <Release>
    <VersionCode>
    2
    </VersionCode>
    <VersionName>
    0.2
    </VersionName>
    <Description>
    New version for test
    </Description>
    <Url>
    http://guessstock.qiniudn.com/GuessStock.apk
    </Url>
    <CheckSum/>
    <Date>
    2014-09-21 17:33:00
    </Date>
    </Release>
    </GuessStock>

    解析代码如下:

                InputStream stream = new DefaultHttpClient()
                        .execute(new HttpGet(url)).getEntity().getContent();
                DocumentBuilder myDocBuilder = DocumentBuilderFactory.newInstance()
                        .newDocumentBuilder();
                Document myDoc = myDocBuilder.parse(new InputSource(stream));
                Element root = myDoc.getDocumentElement();
                NodeList releaseNode = root.getElementsByTagName("Release");
                if (releaseNode.getLength() < 1) {
                    Log.v(TAG, "No release node found");
                    return;
                }
    
                for (int i = 0; i < nodeList.getLength(); i++) {
                    String name = "";
                    String value = "";
    
                    Node node = nodeList.item(i);
                    if ((node.getNodeName().equals("#text"))
                            || (node.getChildNodes().getLength() > 3)
                            || (node.getTextContent().trim().equals("") || node.getTextContent() == null)) {
                        Log.w(TAG, "Invalid node.");
                        continue;
                    }
    
                    name = node.getNodeName();
                    value = node.getTextContent();
    
                    if (name.equals("VersionCode")) {
                        releaseInfo.versionCode = Integer.valueOf(value);
                    } else if (name.equals("VersionName")) {
                        releaseInfo.versionName = value;
                    } else if (name.equals("Description")) {
                        releaseInfo.whatsNew = value;
                    } else if (name.equals("Url")) {
                        releaseInfo.url = value;
                    } else if (name.equals("CheckSum")) {
                        releaseInfo.checkSum = value;
                    } else if (name.equals("Date")) {
                        releaseInfo.date = value;
                    }
                }
  • 相关阅读:
    基于.Net Core的Redis:实现查询附近的地理信息
    基于.Net Core的Redis:基本数据类型及其应用场景与命令行操作
    C# WebClient几种常用方法的用法
    const学习(续)
    C++ const学习
    Unicode
    android studio下使用HAXM android模拟器(x86)加速器
    使用efinance包获取股票数据
    Linux初识
    UWSGI
  • 原文地址:https://www.cnblogs.com/chutianyao/p/4020724.html
Copyright © 2011-2022 走看看