android - Parse XML data through DOM parser. -
i struggling many hours parse xml data.
xml data:
<?xml version="1.0" encoding="utf-8"?> <data> <status>200</status> <description>ok</description> <topcities> <city>ahmedabad</city> <city>bangalore</city> <city>chandigarh</city> <city>chennai</city> <city>cochin</city> <city>faridabad</city> <city>ghaziabad</city> <city>gurgaon</city> <city>hyderabad</city> <city>kolkata</city> <city>mumbai</city> <city>navi mumbai</city> <city>new delhi</city> <city>noida</city> <city>pune</city> <city>thane</city> </topcities> <othercities> <city>agra</city> <city>ahmednagar</city> <city>ajmer</city> <city>akola</city> <city>allahabad</city> <city>ambala</city> <city>amravati</city> <city>amritsar</city> <city>anand</city> <city>aurangabad</city> <city>belgaum</city> <city>bharuch</city> <city>bhavnagar</city> <city>bhilai</city> <city>bhopal</city> <city>bhubaneswar</city> <city>bhuj</city> <city>bilaspur</city> <city>coimbatore</city> <city>dehradun</city> <city>dhanbad</city> <city>dharwad</city> <city>durgapur</city> <city>durg</city> <city>erode</city> <city>firozabad</city> <city>gandhidham</city> <city>gandhinagar</city> <city>goa</city> <city>guwahati</city> <city>gwalior</city> <city>haldwani</city> <city>himmatnagar</city> <city>howrah</city> <city>hubli</city> <city>indore</city> <city>jabalpur</city> <city>jaipur</city> <city>jalandhar</city> <city>jamnagar</city> <city>jamshedpur</city> <city>jodhpur</city> <city>kanpur</city> <city>kolhapur</city> <city>kollam</city> <city>kota</city> <city>kottayam</city> <city>kozhikode</city> <city>kurukshetra</city> <city>lucknow</city> <city>ludhiana</city> <city>madurai</city> <city>mangalore</city> <city>mathura</city> <city>meerut</city> <city>mehsana</city> <city>mohali</city> <city>mysore</city> <city>nagpur</city> <city>nanded</city> <city>nashik</city> <city>nellore</city> <city>panchkula</city> <city>panipat</city> <city>patiala</city> <city>patna</city> <city>pondicherry</city> <city>raipur</city> <city>rajkot</city> <city>ranchi</city> <city>ratnagiri</city> <city>rohtak</city> <city>saharanpur</city> <city>salem</city> <city>sangli</city> <city>satara</city> <city>shimla</city> <city>shillong</city> <city>siliguri</city> <city>sivakasi</city> <city>solapur</city> <city>srinagar</city> <city>surat</city> <city>thanjavur</city> <city>thrissur</city> <city>tirunelveli</city> <city>tirupati</city> <city>tirupur</city> <city>trichy</city> <city>trivandrum</city> <city>udaipur</city> <city>ujjain</city> <city>vadodara</city> <city>vapi</city> <city>valsad</city> <city>varanasi</city> <city>vellore</city> <city>vijayawada</city> <city>visakhapatnam</city> <city>visnagar</city> <city>warangal</city> <city>yamunanagar</city> </othercities> </data>
my parsing code:
xmlparser parser = new xmlparser(); string xml = parser.getxmlfromurl(url); // getting xml document doc = parser.getdomelement(xml); // getting dom element nodelist nl = doc.getelementsbytagname(key_top_city); // looping through item nodes <item> (int = 0; < nl.getlength(); i++) { // creating new hashmap //hashmap<string, string> map = new hashmap<string, string>(); element e = (element) nl.item(i); nodelist children = e.getchildnodes(); (int j = 0; j < children.getlength(); j++) { node child = children.item(j); hashmap<string, string> map = new hashmap<string, string>(); if (child.getnodename().equalsignorecase(key_city)) { log.v("data", parser.getvalue(e, key_city)); map.put(key_city, parser.getvalue(e, key_city)); } menuitems.add(map); }
but unfortunately getting first city(ahmedabad) repeatedly. want cities show..
can please ..
thanks ..
here's implementation using org.w3c.dom package. code loads local file, modify use url.
try { document document = documentbuilderfactory.newinstance().newdocumentbuilder().parse(new file("test.xml")); document.getdocumentelement().normalize(); system.out.println("root element: " + document.getdocumentelement().getnodename()); nodelist nodelist = document.getelementsbytagname("topcities"); system.out.println("-------------------------------"); (int i=0; i<nodelist.getlength();i++) { node node = nodelist.item(i); system.out.println("current element: " + node.getnodename()); if (node.getnodetype() == node.element_node) { // put code add city map in place // of print statement. system.out.println(node.gettextcontent()); } } } catch (saxexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } catch (parserconfigurationexception e) { e.printstacktrace(); }
by way, second loop redundant (unless city element can have children.) need loop through list retrieved via getelementsbytagname.
Comments
Post a Comment