Android RSS Reader Tutorial

RSS står for Really Simple Syndication. RSS er en enkel måte å dele ditt nettsted oppdateringer og innhold med brukerne, slik at brukerne ikke kan ha til å besøke nettstedet ditt daglige for noen form for oppdateringer.

RSS Eksempel

RSS er et dokument som er skapt av nettsiden med XML forlengelse. Du kan enkelt analysere dette dokumentet og vise den til brukeren i søknaden din. En RSS-dokumentet ser ut som dette
. ≪ rss version = "2.0" > < kanal > < title > Sample RSS < /title > < link > http: //www.google.com< /link > < beskrivelse > Verdens beste søkemotor < /beskrivelse > < /kanal > < /rss >.
RSS Elements

En RSS-dokument, for eksempel ovenfor har følgende elementer
Sr.NoComponent & description1 kanal

Dette elementet er brukt for å beskrive RSS feed
2 tittelen

Definerer tittelen på kanalen
3

Definerer hyper link til kanalen
4 beskrivelse

Beskriver kanalen

Parsing RSS

Parsing en RSS-dokument er mer som parsing XML. Så nå kan du se hvordan å analysere et XML-dokument.

For dette, vil vi skape XMLPullParser objekt, men for å skape det vi vil først opprette XmlPullParserFactory objekt og deretter ringe sin newPullParser () metode for å lage XMLPullParser. Syntaksen er gitt nedenfor −
privat XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance (); privat XmlPullParser myparser = xmlFactoryObject.newPullParser ();

Det neste trinnet innebærer å spesifisere fil for XmlPullParser som inneholder XML. Det kan være en fil eller kan være en Stream. I vårt tilfelle er det en stream.Its syntaks er gitt nedenfor −
myparser.setInput (strøm, null);

Det siste trinnet er å analysere XML. En XML-fil består av hendelser, navn, tekst, AttributesValue e.t.c. Så XMLPullParser har en egen funksjon for parsing hver av komponenten av XML-fil. Syntaksen er gitt nedenfor −
int event = myParser.getEventType (); while (event = XmlPullParser.END_DOCUMENT!) {String name = myParser.getName (); bryteren (hendelse) {case XmlPullParser.START_TAG: break; tilfellet XmlPullParser.END_TAG: if (name.equals ("temperaturen")) {temperatur = myParser.getAttributeValue (null, "verdi"); } gå i stykker; } Event = myParser.next (); }

Metoden getEventType
returnerer type hendelse som skjer. f.eks: Dokument start, tag start e.t.c. Metoden getName
returnerer navnet på merkelappen, og siden vi er bare interessert i temperatur, så vi bare sjekke inn betinget utsagn om at hvis vi fikk en temperatur tag, kaller vi metoden getAttributeValue Anmeldelser å returnere oss verdien av temperatur tag.

Bortsett fra disse metodene, det finnes andre metoder som tilbys av denne klassen for bedre parsing XML-filer. Disse metodene er listet nedenfor −
Sr.NoMethod & description1 getAttributeCount ()

Denne metoden bare Returnerer antall attributter av dagens start tag.
2 getAttributeName (int indeks)

Denne metoden returnerer navnet på attributtet spesifisert av indeksverdien.
3 getColumnNumber ()

Denne metoden gjeldende kolonne nummer, fra 0.
4 returnerer retur getDepth ()

Denne metoden returnerer Returnerer gjeldende dybde av elementet.
5 getLineNumber ()

Returnerer gjeldende linjenummer, med start fra 1.
6 getNamespace ()

Denne metoden returnerer navnet plass URI av det aktuelle elementet.
7 getPrefix ()

Denne metoden returnerer prefikset av det aktuelle elementet.
8 getName ()

Denne metoden returnerer navnet på merkelappen.
9 GetText ()

Denne metoden returnerer teksten for det aktuelle elementet. Anmeldelser 10 isWhitespace ()

Denne metoden sjekker om dagens TEKST arrangementet inneholder kun hvite mellomrom.

Eksempel

Her er et eksempel som demonstrerer bruk av XMLPullParser klasse . Det skaper en grunnleggende analysering program som lar deg analysere en RSS-dokument til stede her på http://tutorialspoint.com/android/sampleXML.xml og deretter vise resultatet.

For å eksperimentere med dette eksemplet, kan du kjøre dette på en faktisk enhet eller i en emulator.
StepsDescription1You vil bruke Android studio for å lage en Android-applikasjon under en pakke com.example.sairamkrishna.myapplication. Mens du oppretter dette prosjektet, må du Target SDK og kompilere med på den nyeste versjonen av Android SDK til å bruke høyere nivåer av APIs.2Modify src /MainActivity.java fil for å legge nødvendig code.3Modify res /layout /activity_main å legge respektive XML components.4Create en ny java fil under src /HandleXML.java å hente og analysere XML data.5Create en ny java fil under src /second.java å vise resultatet av XML5Modify AndroidManifest.xml å legge nødvendig internett permission.6Run programmet og velger en kjører Android-enhet, og installere programmet på den og verifisere resultatene.

Følgende er innholdet i den modifiserte hovedaktivitet filen src /MainActivity.java
.
pakke com.example.sairamkrishna. myapplication, import android.app.Activity, import android.content.Intent, import android.os.Bundle, import android.view.Menu, import android.view.MenuItem, import android.view.MotionEvent; import android.view.View; import android.widget.Button, import android.widget.EditText, import android.widget.TextView, import java.util.Set; public class MainActivity strekker Aktivitet {EditText tittel, link, beskrivelse; Button b1, b2; private String finalUrl = "http://tutorialspoint.com/android/sampleXML.xml"; private HandleXML obj; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); title = (EditText) findViewById (R.id.editText); link = (EditText) findViewById (R.id.editText2); description = (EditText) findViewById (R.id.editText3); b1 = (Button) findViewById (R.id.button); b2 = (Button) findViewById (R.id.button2); b1.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) {obj = new HandleXML (finalUrl); obj.fetchXML (); while (obj.parsingComplete); title.setText (obj.getTitle ( )); link.setText (obj.getLink ()); description.setText (obj.getDescription ());}}); b2.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) {Intent i = new Intent (MainActivity.this, second.class), startActivity (i);}}); }Override Public boolean onCreateOptionsMenu (Meny menyen) {//Blås menyen; dette legger til elementer i handlingsfeltet hvis det er til stede. . getMenuInflater () blåse (R.menu.menu_main, menyen); return true; }Override Public boolean onOptionsItemSelected (MENUITEM element) {//Håndtak handlingen bar varen klikk her. Handlingsfeltet vil //automatisk håndtere klikker på Hjem /Opp-knappen, så lenge //som du angir en forelder aktivitet i AndroidManifest.xml. int id = item.getItemId (); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) {return true; } Returnere super.onOptionsItemSelected (element); }}

Følgende er innholdet av java-filen src /HandleXML.java
pakken com.example.rssreader;. import java.io.InputStream, import java.net.HttpURLConnection; import java.net.URL, import org.xmlpull.v1.XmlPullParser, import org.xmlpull.v1.XmlPullParserFactory, import android.util.Log; public class HandleXML {private String tittel = "title"; private String link = "link"; private String beskrivelse = "description"; private String urlString = null; private XmlPullParserFactory xmlFactoryObject; offentlig volatile boolean parsingComplete = true; offentlig HandleXML (String url) {this.urlString = url; } Public String getTitle () {return tittel; } Public String getLink () {return link; } Public String getDescription () {return beskrivelse; } Public void parseXMLAndStoreIt (XmlPullParser myParser) {int hendelse; String tekst = null; try {event = myParser.getEventType (); while (! event = XmlPullParser.END_DOCUMENT) {String name = myParser.getName (); bryteren (hendelse) {case XmlPullParser.START_TAG: break; case XmlPullParser.TEXT: text = myParser.getText (); gå i stykker; tilfellet XmlPullParser.END_TAG: if (name.equals ("title")) {title = tekst; } Else if (name.equals ("link")) {link = tekst; } Else if (name.equals ("beskrivelse")) {description = tekst; } Else {} break; } Event = myParser.next (); } ParsingComplete = false; } Catch (Exception e) {e.printStackTrace (); }} Public void fetchXML () {Thread tråden = new Thread (ny kjørbart () {Override public void run () {try {URL url = new URL (urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection (); conn.setReadTimeout (10000 /* millisekunder * /); conn.setConnectTimeout (15000 /* millisekunder * /); conn.setRequestMethod ("GET"); conn.setDoInput (true); //Starter søket conn.connect (); Input stream = conn.getInputStream (); xmlFactoryObject = XmlPullParserFactory.newInstance (); XmlPullParser myparser = xmlFactoryObject.newPullParser (); myparser.setFeature (XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); myparser.setInput (strøm, null); parseXMLAndStoreIt (myparser ); stream.close (); } Catch (Exception e) {}}}); thread.start (); }}

Lag en fil og navngitt som second.java fil under katalogen java /second.java
pakken com.example.sairamkrishna.myapplication, import android.app.Activity; import android. os.Bundle, import android.webkit.WebView; /** * Laget av Sairamkrishna på 4/6/2015. * /public class andre strekker Aktivitet {Override beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.second_activity); WebView w1 = (WebView) findViewById (R.id.webView); w1.loadUrl ("http://tutorialspoint.com/android/sampleXML.xml"); }}

Lag en xml fil på res /layout /second_main.xml
> xml version = "1.0" encoding = "UTF-8" > < LinearLayout xmlns?: android = "http://schemas.android.com/apk/res/android" android: orientering = "vertikal" android: layout_width = "match_parent" android: layout_height = "match_parent" > < WebView android: layout_width = "match_parent" android: layout_height = "match_parent" android: id = "+ id /WebView" android: layout_gravity = "center_horizontal" /> < /LinearLayout >

Endre innholdet i res /layout /activity_main.xml
til følgende −
< RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android~~number=plural" xmlns: verktøy = " http://schemas.android.com/tools "android: layout_width =" match_parent "android: layout_height =" match_parent "android: paddingLeft =" @ dimen /activity_horizontal_margin "android: paddingRight =" @ dimen /activity_horizontal_margin "android: paddingTop = ". MainActivity" "@ dimen /activity_vertical_margin" android:: paddingBottom = "@ dimen /activity_vertical_margin" verktøy kontekst = android: transitionGroup = "true" > < TextView android: text = "RSS eksempel" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /textview" android: Tekststørrelse = "35dp" android: layout_alignParentTop = "true" android: layout_centerHorizontal = "true" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Tutorials point" android: id = "+ id /textView" android: layout_below = "+ id /textview" android: layout_centerHorizontal = "true" android: textcolor = "# ff7aff24" android: Tekststørrelse = "35dp" /> < Imageview android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /bildeVis" android: src = "@ teikne /abc" android: layout_below = "+ id /textView" android : layout_centerHorizontal = "true" android: tema = "@ stil /Base.TextAppearance.AppCompat" /> < EditText android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /EditText" android: layout_below = "+ id /bildeVis" android: hint = "tittle" android: textColorHint = "# ff69ff0e" android: layout_alignParentRight = "true" android: layout_alignParentEnd = "true" android: layout_alignParentLeft = "true" android: layout_alignParentStart = "true" /> < EditText android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /editText2" android: layout_below = "+ id /EditText" android: layout_alignLeft = "+ id /EditText" android: layout_alignStart = "+ id /EditText" android: textColorHint = "# ff21ff11" android: hint = "Link" android: layout_alignRight = "+ id /EditText" android: layout_alignEnd = "+ id /EditText" /> < EditText android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /editText3" android: layout_below = "+ id /editText2" android: layout_alignLeft = "+ id /editText2" android: layout_alignStart = "+ id /editText2" android: hint = "Beskrivelse" android: textColorHint = "# ff33ff20" android: layout_alignRight = "+ id /editText2" android: layout_alignEnd = "+ id /editText2" /> < Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Fetch" android: id = "+ id /knapp" android: layout_below = "+ id /editText3" android: layout_alignParentLeft = "true" android: layout_alignParentStart = "true" android: layout_toLeftOf = "+ id /bildeVis" android: layout_toStartOf = "+ id /bildeVis" /> < Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Resultat" android: id = "+ id /knappen2" android: layout_alignTop = "+ id /knapp" android: layout_alignRight = "+ id /editText3" android: layout_alignEnd = "+ id /editText3" /> < /RelativeLayout >

Endre res /verdier /string.xml
til følgende
< resources > < string name = "APP_NAME" > My Application < /string > < string name = "hello_world" > Hei, verden <! /string > < string name = "action_settings" > Innstillinger < /string > < /ressurser >

Dette er standard AndroidManifest.xml
. <? xml version = "1.0" encoding = "utf-8" > < manifest xmlns:? android = "http://schemas.android.com/apk/res/android" pakken = "com.example.sairamkrishna.myapplication" > < bruker-tillatelse android: name = "android.permission.INTERNET" /> < søknad android: allowBackup = "true" android: icon = "@ Mipmap /ic_launcher" android: label = "@ streng /APP_NAME" android: tema = "@ stil /AppTheme" > < aktivitet android: ". MainActivity" name = android: label = "@ streng /APP_NAME" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.LAUNCHER" /> < /intent-filter > < /aktivitets > < aktivitet android: ". sekund" name = > < /aktivitets > < /søknad > < /manifest >

La oss prøve å kjøre application.I anta at du hadde laget ditt AVD
mens du gjør oppsett miljø. For å kjøre programmet fra Android studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Android studio installerer programmet på AVD og starter den, og hvis alt er bra med oppsettet og søknad, vil det vise følgende Emulator vindu −

Bare trykk på Hent kilder knappen for å hente RSS feed. Etter å ha trykket, vil følgende skjerm vises som ville vise RSS-data.

Bare trykk resultatet knappen for å se XML, som er plassert på http://tutorialspoint.com/android/sampleXML.xml < .no>