, xml - står for extensible mark - up language.xml er en meget populær format og sædvanligvis anvendes til udveksling af data på internettet.i dette kapitel forklares, hvordan til at analysere xml - filen og få de nødvendige oplysninger fra det, indeholder tre typer af xml - parsers android som dom, sax og xmlpullparser,.blandt dem alle androide anbefale xmlpullparser, fordi den er effektiv og let at anvende.så vi skal bruge xmlpullparser for parsing xml, det første skridt er at identificere de områder i xml - data, som de er interesseret i.f.eks.i xml - nedenfor vi interesserede i at få kun temperatur. <?xml - version = "0"?> < nuværende > < by id = "2643743" navn = "london" > < coord re = "- 0.12574 lat =" 51.50853 "/> < land > gb < /country > < og solen stiger =" 2013-10-08t06:13:56 "= =" 2013-10-08t17:21:45 "/> < /by > < temperaturen værdi =" 289.54 "min =" 289.15 "max =" 290.15 "enhed =" kelvin "/> < vandindhold værdi =" 77 "enhed ="% /> < pres værdi = "1025" enhed = hpa "/> < /country >, xml - elementer, en xml - fil består af mange elementer.her er skemaet definition af bestanddele af en xml - fil og deres beskrivelse. sr.nocomponent & beskrivelse 1, prolog, en xml - fil begynder med en prolog.den første linje, der indeholder oplysninger om en fil er prolog, 2, begivenheder, en xml - sagen har mange begivenheder.omstændigheder kunne være sådan her.dokument begynder, dokument ender, tag start, mærke og tekst e.t.c, 3, tekst, bortset fra mærker og begivenheder og xml - fil indeholder også en enkel tekst.såsom, gb, er en tekst i landet -., 4, attributter, attributter er de supplerende egenskaber ved et mærke, som f.eks. værdi e.t.c, xml - parsing, i det næste skridt, vil vi skabe xmlpullparser objekt, men for at sikre, at vi først vil skabe xmlpullparserfactory objekt, og ring så til sin newpullparser() metode til at skabe xmlpullparser.dens syntaks er givet nedenfor −, private xmlpullparserfactory xmlfactoryobject = xmlpullparserfactory. newinstance(); private xmlpullparser myparser = xmlfactoryobject. newpullparser();, det næste skridt er med dokumentation for xmlpullparser, der indeholder xml.det kunne være en fil eller kunne være en bæk.i vores tilfælde er det en bæk. dens syntaks er givet nedenfor −,, myparser. setinput (strøm, nul), det sidste skridt er at analysere den xml.en xml - fil består af begivenheder, navn, tekst, attributesvalue e.t.c. så xmlpullparser har en særskilt funktion for parsing hver af den del af xml - filer.dens syntaks er givet nedenfor − int begivenhed = myparser. geteventtype(); mens (sag!= xmlpullparser. end_document) (string navn = myparser. getname(); skift (ref.) (sag xmlpullparser.start_tag: brud; sag xmlpullparser.end_tag: hvis (navn. er ("temperatur") (temperatur = myparser. getattributevalue (null "værdi");} pause.} begivenhed = myparser. next();}, metode, geteventtype, returnerer den type begivenhed, der sker.f.eks.: dokument, tag begynder e.t.c. metode, getname, returnerer den navn af rfid - og eftersom vi kun er interesseret i temperatur, så vi bare se betinget udtalelse om, at hvis vi har en temperatur på et, vi kalder den metode, getattributevalue, at vende os værdien af temperatur, bortset fra det tag. metoder, der er andre metoder, der er fastsat i denne klasse for bedre parsing xml - filer.disse metoder er anført nedenfor og minus;, sr.nomethod & beskrivelse 1, getattributecount(), denne metode juste retour antallet af attributter for den nuværende begynde at øremærke, 2, getattributename int (indeks), og denne metode giver navn af attributten angivet i indeks, 3, getcolumnnumber(), denne metode afkast de returnerer den nuværende kolonne nummer, fra 0, 4, getdepth(), denne metode afkast afkast, den nuværende dybde af element., 5, getlinenumber(), returnerer den nuværende linje fra 1, 6, getnamespace(), denne metode giver domænenavnet uri af den aktuelle element. 7. denne metode, getprefix(), returnerer præfikset for aktuelle element, 8, getname(), denne metode giver navn af mærket, 9, gettext(), det er opfyldthod returnerer den tekst til det specifikke element, 10, iswhitespace(), denne metode, kontrollerer, om den nuværende tekst begivenhed kun indeholder whitespace tegn, f.eks. her er et eksempel, som viser, at brugen af xmlpullparser klasse.det skaber en grundlæggende vejr anvendelse, der giver dig mulighed for at analysere xml - fra google vejr api - og viser resultatet, at eksperimentere med dette eksempel, kan du styre det på en rigtig anordning eller en emulator., stepsdescription 1you vil bruge androide studie for at skabe en androide ansøgning i henhold til en pakke com.example.sairamkrishna.myapplication.samtidig med at skabe dette projekt, vær sikker på du målet sdk og udarbejde med i den seneste version af androide sdk at anvende højere niveauer af api - grænseflader.2modify src /mainactivity.java fil at tilføje de nødvendige regler.3modify res /layout /activity_main at tilføje respektive xml - komponenter 4create en ny java - sag under src /handlexml.java for at hente og analysere xml - data 5modify androidmanifest.xml for at tilføje de nødvendige internet tilladelse 6run anvendelse og vælge en løbende androide anordning og installere anvendelsen på det og kontrollere de resultater, der er indholdet af den ændrede vigtigste aktivitet fil, mainactivity -.pakken er com.example.sairamkrishna.myapplication; import android.content.context; import android.content.intent; import android.content.sharedpreferences; import android.graphics.typeface; import android.support.v7.app.actionbaractivity; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.textview; import android.widget.toast; com.example.sairamkrishna.myapplication offentlige klasse mainactivity udvider actionbaractivity {edittext ed1, ed2, eib, ed4, ed5; private snor url1 = "http://api.openweathermap.org/data/2.5/weather?q = "private snor url2 =" & mode = xml - "private handlexml mål; knap b1 beskyttede tomrum oncreate (bundt savedinstancestate) (super. oncreate (savedinstancestate); setcontentview (r.layout. activity_main), b1 = (knap) findviewbyid (r.id.button); ed1 = (edittext) findviewbyid (r.id.edittext); ed2 = (edittext) findviewbyid (r.id.edittext2); eib = (edittext) findviewbyid (r.id.edittext3); ed4 = (edittext) findviewbyid (r.id.edittext4); ed5 = (edittext) findviewbyid (r.id.edittext5), b1. setonclicklistener (ny mening. onclicklistener() {@ tilsidesætte offentlige tomrum onclick (betragtning v) (string url = ed1. gettext(). tostring(); snor finalurl = url1 + url+ url2; ed2. settext (finalurl); mål = nye handlexml (finalurl); mål nr. fetchxml(); mens (mål nr. parsingcomplete); ed2. settext (mål nr. getcountry()); eib. settext (mål nr. gettemperature()); ed4. settext (mål nr. gethumidity()); ed5. settext (mål nr. getpressure());));} @ tilsidesætte offentlige boolean oncreateoptionsmenu (menu kortet) (//puste menuen. dette tilføjer punkter til den aktion, bar hvis det er til stede.getmenuinflater(). puste (r.menu.menu_main menuen); tilbage.} @ tilsidesætte offentlige boolean onoptionsitemselected (menuitem punkt på dagsordenen) (//klare foranstaltninger bar punkt klik her.aktionen bar //automatisk klare klik på hjem /op knappen, så længe //som de angiver en forælder aktivitet i androidmanifest.xml.int id = post. getitemid(); //noinspection simplifiableifstatement hvis (id = = r.id.action_settings) {tilbage.} tilbage, super. onoptionsitemselected (punkt)), som er indholdet af src /com. f.eks. xmlparser /handlexml -., pakke com.example.sairamkrishna.myapplication; import org.xmlpull.v1.xmlpullparser; import org.xmlpull.v1.xmlpullparserfactory, import java.io.inputstream; import java.net.httpurlconnection; import java.net.url; /* * *, der er skabt af sairamkrishna på 4 /11 /2015.* /offentlige klasse handlexml (private snor land = "county" private snor temperatur = "temperatur" private snor fugtighed = "fugtighed" private snor pres = "pres" private snor urlstring = ugyldig; private xmlpullparserfactory xmlfactoryobject; offentlige flygtige boolean parsingcomplete = sandt, offentlige handlexml (string url) (this.urlstring = url.} offentlige snor getcountry() {tilbage land} offentlige snor gettemperature() {tilbage temperatur) offentlige snor gethumidity() {tilbage luftfugtighed;} offentlige snor getpressure() {tilbage pres;} offentlige tomrum parsexmlandstoreit (xmlpullparser myparser) (int begivenhed;streng tekst = ugyldig; prøve (tilfælde = myparser. geteventtype(); mens (sag!= xmlpullparser. end_document) (string navn = myparser. getname(); skift (ref.) (sag xmlpullparser.start_tag: brud; sag xmlpullparser.text: tekst = myparser. gettext(); pause, sag xmlpullparser.end_tag: hvis (navn. er ("land")) (land = tekst;} andre, hvis navn er ("fugtighed".)) (fugtighed = myparser. getattributevalue (null "værdi");} andre, hvis (navn. er ("pres") (pres = myparser. getattributevalue (null "værdi")}ellers, hvis navn. er ("temperatur") (temperatur = myparser. getattributevalue (null "værdi");} andre {} pause.} begivenhed = myparser. next();} parsingcomplete = falske} fangst (undtagen e) (f. printstacktrace();}} offentlige tomrum fetchxml() {tråd tråd = ny tråd (nye runnable() {@ tilsidesætte offentlige tomrum run() (prøve (url url = nye url (urlstring); httpurlconnection conn = (httpurlconnection) url. openconnection(); conn.setreadtimeout (10000 /* milliseconds * /); conn.setconnecttimeout (15.000 /* millisekunder * /); conn.setrequestmethod (""); conn.setdoinput (korrekt). connect(); inputstream å =. getinputstream(); xmlfactoryobject = xmlpullparserfactory. newinstance(); xmlpullparser myparser = xmlfactoryobject. newpullparser(); myparser. setfeature (xmlpullparser.feature_process_namespaces, falske); myparser. setinput (vandløb, nul); parsexmlandstoreit (myparser); strøm. close();} fangst (undtagen e) (f. printstacktrace();}}}); tråd. start();), som er ændret indholdet af xml, res /layout /activity_main. xml,., < relativelayout xmlns: androide = "http://schemas.android.com/apk/res/android" xmlns: værktøj = "http://schemas.android.com/tools" androide: layout_width = "match_parent" androide: layout_height = "match_parent" androide. paddingleft = "@ dimension /activity_horizontal_margin" androide: paddingright = "@ dimension /activity_horizontal_margin" androide: paddingtop = "@ dimension /activity_vertical_margin" androide: paddingbottom = "@ dimension /activity_vertical_margin" værktøjer: forbindelse = ". mainactivity" > < textview androide: layout_width = "wrap_content" androide: layout_height = "wrap_content" androide: tekst = xml - hent "androide: id =" @ + id/textview "androide: layout_alignparenttop =" ægte "androide: layout_centerhorizontal =" ægte "androide: textsize =" 30dp "/> < textview androide: layout_width =" wrap_content "androide: layout_height =" wrap_content "androide: tekst =" undervise "androide: id =" @ + id /textview2 "androide: layout_below =" @ + id /textview "androide: layout_centerhorizontal =" ægte "androide: textsize =" 35dp "androide: textcolor ="ff16ff01 "/> < edittext androide: layout_width =" wrap_content "androide: layout_height =" wrap_content "androide: id =" @ + id /edittext "androide: hint =" sted "androide: layout_below =" @ + id /textview2 "androide: layout_alignparentleft =" ægte "androide: layout_alignparentstart = "ægte" androide: layout_margintop = "61dp" androide: layout_alignparentright = "ægte" androide: layout_alignparentend = "ægte" /> < knap androide: layout_width = "wrap_content" androide: layout_height = "wrap_content" androide: tekst = "vejr" androide: id = "@ + id /knap" androide: layout_below = "@ + id /edittext" androide: layout_centerhorizontal = "ægte" /> < edittext androide: layout_width = "wrap_content" androide: layout_height = "wrap_content" androide: id = "@ + id /edittext2" androide: layout_below = "@ + id /knap" - androiden: layout_alignparentleft = "ægte" androide: layout_alignparentstart = "ægte" androide: layout_alignright = "@ + id /edittext"ndroid: layout_alignend = "@ + id /edittext" androide: tekst = "valuta" /> < edittext androide: layout_width = "wrap_content" androide: layout_height = "wrap_content" androide: id = "@ + id /edittext3" androide: layout_below = "@ + id /edittext2" androide. layout_alignparentleft = "ægte" androide: layout_alignparentstart = "ægte" androide: layout_alignparentright = "ægte" androide: layout_alignparentend = "ægte" androide: tekst = "midlertidige" /> < edittext androide: layout_width = "wrap_content" androide: layout_height = "wrap_content" androide: id = "@ + id /edittext4" androide: layout_below = "@ + id /edittext3" androide: layout_alignparentleft = "ægte" androide: layout_alignparentstart = "rigtigt"- androiden: layout_alignright = "@ + id /edittext3" androide: layout_alignend = "@ + id /edittext3" androide: tekst = "fugtighed" /> < edittext androide: layout_width = "wrap_content" androide: layout_height = "wrap_content" androide: id = "@ + id /edittext5" androide. layout_below = "@ + id /edittext4" androide: layout_alignparentleft = "ægte" androide: layout_alignparentstart = "ægte" androide: layout_alignparentright = "ægte" androide: layout_alignparentend = "ægte" androide: tekst = "pres" /> < /relativelayout > efter er indholdet af androidmanifest.xml, fil. <?xml - version = "0" kodning = "utf - 8"?> < åbenbar xmlns: androide = "http://schemas.android.com/apk/res/android" pakke = "kom. f.eks. sairamkrishna. myapplication" > < anvender tilladelse androide: navn = "androide. tilladelse. internet" /> < anvendelse androide: allowbackup = "ægte" androide: ikon = "@ mipmap /ic_launcher" androide: fareseddel = "@ snor /app_name" androide: tema = "@ stil /apptheme" > < aktivitet androide: navn = ". mainactivity" androide: fareseddel = "@ snor /app_name" > < hensigt filter > < aktion androide: navn = "androide. forsæt. vigtigste" /> < kategori androide: navn = "androide. hensigt. kategori. granatkaster" /> < /hensigt filter > < /aktivitet >< /anvendelse > < /åbenbar > lad os forsøge at styre vores ansøgning vi bare ændres.jeg går ud fra, at du har skabt din, avd, mens det miljø fælde.at løbe app fra androide studie, åbne en af jeres projekt er aktivitet, filer og klik, ikon fra toolbar.- androiden studie installationer - app på din avd og starter det, og hvis det er fint med din fælde og anvendelse, vil det vise følgende emulator vindue −,, hvad du skal gøre, er at komme ind på ethvert sted i stedet område.jeg har f.eks. i indien.tryk på den knap vejret, når man træder ind i stedet.følgende skærm, ville det være dig avd −, nu når du trykker på den knap vejret, vil ansøgningen kontakt google vejr api - og anmodning om deres nødvendige xml - placering fil og analysere det.i tilfælde af london efter sag ville være tilbage −,, opmærksom på, at denne temperatur er i kelvin, så hvis du vil lave det om til en mere understandble format, er du nødt til at omdanne det til celcius.,,
- androiden xml - parser tutorielle
Previous:- test