標籤:
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 解析xml