When using Documentbuilder to parse XML under Android, there are a lot of pits, mainly to be careful when traversing child nodes.
Suppose you have the following XML file
<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>
The parsing code is as follows:
InputStream stream =Newdefaulthttpclient (). Execute (Newhttpget (URL)). getentity (). getcontent (); Documentbuilder Mydocbuilder=documentbuilderfactory.newinstance (). Newdocumentbuilder (); Document MyDoc= Mydocbuilder.parse (NewInputSource (stream)); Element Root=mydoc.getdocumentelement (); NodeList Releasenode= Root.getelementsbytagname ("Release"); if(Releasenode.getlength () < 1) {log.v (TAG,"No release node found"); return; } for(inti = 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 parsing xml