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;
                }
            }

 

posted @ 2015-07-27 10:37    阅读(303)  评论(0编辑  收藏  举报