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;

                }

            }

 

你可能感兴趣的:(android)