Android Wing av mucchin | XML-relaterade



Hur man läser XML av Android Apps


Hur man analyserar ladda XML i Android app?

Jag tror att många av er tänker app i Android app, att göra något för att analysera XML-filen.
Till exempel, om det, och vill använda webbtjänster API, är XML en viktig teknik för analys.
(Med en webbtjänst API är det som ger oss Rakuten, Amazon, etc, såsom rekrytering, och många företag, här är deras beskrivning utelämnas.)
Så kommer jag presentera förfarandet för att läsa XML i Android, till analysen, har jag gjort.


Först och främst, låt den att importera följande två klasser.
importera org.xmlpull.v1.XmlPullParser;
importera android.util.Xml;


Men jag tror att om när du använder webbtjänster API, och ta vägen genom att importera en XML-fil i meddelandet HTTP, att för att få en InputStream exempel i beskrivningen av denna tid, vi läser InputStream exempel XML filen redan Jag antar det.
Enligt följande: 1, för att få XmlPullParser instans..


XmlPullParser xmlPullParser = Xml.newPullParser ();


XmlPullParser, tänk klass och ger möjlighet för människor att gå läsa följande delar av XML.
Enligt följande: 2, för att sätta InputStream XML-filen har laddats in i XmlPullParser..


xmlPullParser.setInput (är, "UTF-8");


※ är den första argumentet är det andra argumentet InputStream exempel ange kodning av XML-fil.


Tja, redo att gå till analysera XML är nu klar.
Längs resten som vill göra, men gå läs den, här kommer vi att kallas, räknar vi det på följande sätt.
• I från början till slutet av XML-filen, för att få en lista av (Value) värdet av namnskylt.
"Och värdet av namnet taggen" är en del av följande xxx.
<namn> xxx </ name>
Låt oss först titta på exempelkod.




String a [] = new String [] ();
int räknare = 0;
for (int e = xmlPullParser.getEventType ();! e = XmlPullParser.END_DOCUMENT, e = xmlPullParser.next ()) {
if (e == XmlPullParser.START_TAG && xmlPullParser.getName (). equals ("namn")) {
en [räknare] = xmlPullParser.nextText ();
Räknaren + +
}
}


Har inte skrivit endast minimal kod, ser ut så här.
xmlPullParser är, jag har inte alla element eller ett per rad, kommer vi läser en efter en att verkligen noga och XML.
Om starttagg, värde, sluttaggen, om du använder något av () är en mekanism gå på start-och sluttagg ⇒ ⇒ taggvärde XmlPullParser.next.
Detta kan göras antingen genom lämpligt eller olämpligt, som jag kommer.
Jag först var jag förbryllad.
Om man tittar på for-slingan, och är det ursprungliga värdet () xmlPullParser.getEventType.
Vid denna punkt, xmlPullParser bara för att du ställer in InputStream, har värdet på () blivit "START_DOCUMENT" betyder början getEventType.
I slutet av slingan är tills "END_DOCUMENT" betyder den sista.
Graden av slingan, och gå vidare till nästa köra () XmlPullParser.next.
Loop kallas.
Du kan vara ett resultat, sägs det, kommer att läsa från början till slutet av XML-filen.
Det följande är en beskrivning av insidan av slingan.
Villkoren för uttalandet beskrivs i termer av om.
Enkelt uttryckt innebär det att "om det är starttaggen namnet taggen".
Jag vill, men det "värde" som är inneslutna i öppning och stängning taggar namnet på sitt "värde" som har blivit ström xmlPullParser är, värdet tas, taggen för vad det är först och främst är vad som hade varit omgiven av, tar jag inte. (GetName. () Return värde blir null)
Genom att, när starttaggen namnet taggen vrids i den aktuella, som tar en sträng av följande element, i en mening om att använda () nextText.
Detta är den metod som kallas för att hämta nästa element som en sträng.


Det finns andra sätt, så är ett bra exempel vad ovan inte nödvändigtvis förstår.
Jag har gjort ungefär som beskrivits ovan.
För övrigt, hur man värdet utan i stället ta attribut taggen, så då presenteras här.
Till exempel, låt oss säga något liknande i samma som ovan, i sin tur att ta en lista över id-attributet i taggen namn.
"Och id attributet i taggen namnet" är en del av följande yyy.
<namn id=yyy> xxx </ name>


for-slingor, om uttalanden så samma, bara innehållet i uttalandet tas om.
Gör följande.


en [räknare] = xmlPullParser.getAttributeValue (null, "namn");


Om du får attribut använder () getAttributeValue som beskrivits ovan.
Det första argumentet anger en "namn" attributnamn är null, det andra argumentet.
Enligt API-dokumentationen, vilket gör det "namespace" Det första argumentet är andra argument "namn" attribut.
Jag skriver ett namnområde om inert, är det första argumentet, gör inte och det är inte noll, måste detta null.
Om "namnrymd XML", jag bara helt enkelt inte detaljer, här är deras beskrivning inte.
Nej, inte kan vara. (Skrattar)
getAttributeValue (), eftersom användningen av ett, det ger också en mönster med ett annat argument av typen int.
Eftersom detta är att ange index, om det här fallet att ersätta om du tillskriver så den första,


en [räknare] = xmlPullParser.getAttributeValue (0);


Kommer att bli.
Eftersom indexet i arrayen, anger du ett värde som erhålls genom att subtrahera 1 från det verkliga antalet.

Och om ens enda metod introducerades ovan, kan erhållas i analysen av XML Web services API.