Android - RSS Reader Tutorial

RSS steht für Really Simple Syndication. RSS ist eine einfache Möglichkeit, Ihre Website-Updates und Inhalte mit Ihren Benutzern zu teilen, so dass Benutzer möglicherweise nicht auf Ihre Website täglich für jede Art von Updates zu besuchen.

RSS Beispiel

RSS ist ein Dokument, das von der Website mit XML-Erweiterung erstellt wird.Sie können ganz einfach analysieren Dieses Dokument und zeigen Sie es an den Benutzer in Ihrer Anwendung. Ein RSS-Dokument sieht wie folgt aus.
<rss version="2.0">
<channel>
   <title>Sample RSS</title>
   <link>http://www.google.com</link>
   <description>World's best search engine</description>
</channel>
</rss>

RSS-Elemente

Ein RSS-Dokument, wie oben enthält die folgenden Elemente.
Sr.NoKomponenten & Beschreibung
1Kanal
Dieses Element wird verwendet, um den RSS-Feed zu beschreiben
2Titel
Legt den Titel des Kanals
3Link
Definiert den Hyperlink zu dem Kanal
4Beschreibung
Beschreibt den Kanal

Parsing RSS

Parsen eines RSS-Dokument ist mehr wie Parsen von XML. So, jetzt wir sehen, wie ein XML-Dokument zu analysieren.
Dafür werden wir XMLPullParser Objekt zu erstellen, sondern um zu erstellen, dass wir zuerst zu erstellen XmlPullParserFactory Objekt und rufen dann ihre newPullParser () -Methode XMLPullParser erstellen. Die Syntax ist unten angegeben -
private XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
private XmlPullParser myparser = xmlFactoryObject.newPullParser();
Der nächste Schritt beinhaltet die Angabe der Datei für XmlPullParser, die XML enthält. Es könnte eine Datei sein oder könnte ein Strom sein. In unserem Fall ist es ein stream.Its Syntax ist unten angegeben -
myparser.setInput(stream, null);
Der letzte Schritt ist, um die XML parsen. Eine XML-Datei besteht aus Ereignissen, name, text, AttributesValue etc So XMLPullParser verfügt über eine separate Funktion für die Analyse jeder der Komponente der XML-Datei. Die Syntax ist unten angegeben -
int event = myParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) 
{
   String name=myParser.getName();
   
   switch (event){
      case XmlPullParser.START_TAG:
      break;
      
      case XmlPullParser.END_TAG:
      if(name.equals("temperature")){
         temperature = myParser.getAttributeValue(null,"value");
       }
       break;
    }   
    event = myParser.next();      
}
Das Verfahren getEventType die Art der Veranstaltung, was geschieht, zurückgibt. zB: Dokument Start-Tag starten etc Die Methode getName gibt den Namen des Tags und da wir nur daran interessiert, in der Temperatur, so dass wir nur einchecken bedingte Anweisung, dass wenn wir eine Temperatur-Tag bekam, rufen wir die Methode getAttributeValue uns die Rück Wert der Temperatur-Tag.
Abgesehen von den diesen Verfahren gibt es andere von dieser Klasse für bessere Parsen von XML-Dateien bereitgestellten Verfahren. Diese Methoden sind: -
Sr.NoVerfahren & Beschreibung
1getAttributeCount ()
Diese Methode gibt nur die Anzahl der Attribute des aktuellen Start-Tag.
2getAttributeName (int index)
Diese Methode gibt den Namen des Attributs durch den Indexwert bestimmt.
3getColumnNumber ()
Diese Methode gibt den liefert die aktuelle Spaltennummer, beginnend bei 0.
4getDepth ()
Diese Methode liefert liefert die aktuelle Tiefe des Elements.
5getLineNumber ()
Gibt die aktuelle Zeilennummer, ab 1.
6getNamespace ()
Diese Methode gibt den Namensraum-URI des aktuellen Elements.
7getPrefix ()
Diese Methode gibt den Präfix des aktuellen Elements.
8getName ()
Diese Methode gibt den Namen des Tags.
9getText ()
Diese Methode gibt den Text für dieses spezielle Element.
10isWhitespace ()
Diese Methode überprüft, ob die aktuelle Textereignis enthält nur Leerraumzeichen.

Beispiel

Hier ist ein Beispiel demonstriert die Verwendung von XMLPullParser Klasse. Es schafft eine grundlegende Parsing-Anwendung, die Sie hier analysieren eine vorhanden RSS Dokument ermöglichthttp://tutorialspoint.com/android/sampleXML.xml und dann zeigen das Ergebnis.
Um bei diesem Beispiel zu experimentieren, können Sie dies auf einem Gerät oder einem Emulator laufen.
SchritteBezeichnung
1Sie werden Android-Studio verwenden, um ein Android-Anwendung unter einem Paket com.example.sairamkrishna.myapplication erstellen.Bei der Erstellung dieses Projekt, stellen Sie sicher SDK Ziel und Kompilieren Sie mit der neuesten Version des Android SDK zu höheren Ebenen der APIs verwenden.
2Ändern src / MainActivity.java Datei an erforderlichen Code hinzuzufügen.
3Ändern Sie die res / layout / activity_main zum jeweiligen XML-Komponenten hinzuzufügen.
4Erstellen Sie eine neue Java-Datei unter src / HandleXML.java zu holen und zu parsen von XML-Daten.
5Erstellen Sie eine neue Java-Datei unter src / second.java zum Ergebnis der XML anzuzeigen
5Ändern AndroidManifest.xml die notwendigen Internet-Berechtigung hinzuzufügen.
6Führen Sie die Anwendung, und wählen Sie einen laufenden Android-Gerät und installieren Sie die Anwendung und überprüfen Sie die Ergebnisse.
Im Folgenden ist der Gehalt des modifizierten Haupttätigkeit Datei src /MainActivity.java.
package 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 extends Activity {
   EditText title,link,description;
   Button b1,b2;
   private String finalUrl="http://tutorialspoint.com/android/sampleXML.xml";
   private HandleXML obj;
   
   @Override
   protected 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(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            obj = new HandleXML(finalUrl);
            obj.fetchXML();
            
            while(obj.parsingComplete);
            title.setText(obj.getTitle());
            link.setText(obj.getLink());
            description.setText(obj.getDescription());
         }
      });
      
      b2.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent in=new Intent(MainActivity.this,second.class);
            startActivity(in);
         }
      });
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }
   
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      
      int id = item.getItemId();
      
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}
Hier finden Sie den Inhalt der Java-Datei src / HandleXML.java.
package 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 title = "title";
   private String link = "link";
   private String description = "description";
   private String urlString = null;
   private XmlPullParserFactory xmlFactoryObject;
   public volatile boolean parsingComplete = true;
   
   public HandleXML(String url){
      this.urlString = url;
   }
   
   public String getTitle(){
      return title;
   }
   
   public String getLink(){
      return link;
   }
   
   public String getDescription(){
      return description;
   }
   
   public void parseXMLAndStoreIt(XmlPullParser myParser) {
      int event;
      String text=null;
      
      try {
         event = myParser.getEventType();
         
         while (event != XmlPullParser.END_DOCUMENT) {
         String name=myParser.getName();
         
         switch (event){
            case XmlPullParser.START_TAG:
            break;
            
            case XmlPullParser.TEXT:
            text = myParser.getText();
            break;
            
            case XmlPullParser.END_TAG:
            
            if(name.equals("title")){
               title = text;
            }
            
            else if(name.equals("link")){
               link = text;
            }
            
            else if(name.equals("description")){
               description = text;
            }
            
            else{
            }
            
            break;
            }
            
            event = myParser.next(); 
            }
            
            parsingComplete = false;
            }
            
            catch (Exception e) {
               e.printStackTrace();
            }
         }
         
         public void fetchXML(){
            Thread thread = new Thread(new Runnable(){
               @Override
               public void run() {
               
               try {
               URL url = new URL(urlString);
               HttpURLConnection conn = (HttpURLConnection) url.openConnection();
               
               conn.setReadTimeout(10000 /* milliseconds */);
               conn.setConnectTimeout(15000 /* milliseconds */);
               conn.setRequestMethod("GET");
               conn.setDoInput(true);
               
               // Starts the query
               conn.connect();
               InputStream stream = conn.getInputStream();
               
               xmlFactoryObject = XmlPullParserFactory.newInstance();
               XmlPullParser myparser = xmlFactoryObject.newPullParser();
               
               myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
               myparser.setInput(stream, null);
               
               parseXMLAndStoreIt(myparser);
               stream.close();
            }
            
            catch (Exception e) {
            }
         }
      });
      thread.start(); 
   }
}
Erstellen Sie eine Datei und als second.java Datei unter Verzeichnis mit dem Namen java / second.java
package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

/**
 * Created by Sairamkrishna on 4/6/2015.
 */
public class second extends Activity {
   @Override
   protected 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");
   }
}
Erstellen Sie eine XML-Datei an res / layout / second_main.xml
>?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" 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>
Ändern Sie den Inhalt der res / layout / activity_main.xml der folgenden -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="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="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context=".MainActivity"
   android:transitionGroup="true">
   
   <TextView android:text="RSS example" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="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:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:theme="@style/Base.TextAppearance.AppCompat" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_below="@+id/imageView"
      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="Description"
      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/button"
      android:layout_below="@+id/editText3"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_toLeftOf="@+id/imageView"
      android:layout_toStartOf="@+id/imageView" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Result"
      android:id="@+id/button2"
      android:layout_alignTop="@+id/button"
      android:layout_alignRight="@+id/editText3"
      android:layout_alignEnd="@+id/editText3" />

</RelativeLayout>
Ändern Sie die res / Werte / string.xml der folgenden
<resources>
   <string name="app_name">My Application</string>
   <string name="hello_world">Hello world!</string>
   <string name="action_settings">Settings</string>
</resources>
Dies ist der Standard AndroidManifest.xml.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <uses-permission android:name="android.permission.INTERNET"/>
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
      
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   <activity android:name=".second"></activity>
</application>
</manifest>
Lasst uns versuchen, führen Sie Ihre application.I annehmen, dass Sie Ihren geschaffen hatte AVD dabei Umgebungskonfiguration. Um die App vom Android-Studio, öffnen Sie eine der Aktivität Dateien Ihres Projekt auszuführen, und klicken Sie auf Eclipse-Run IconAusführen-Symbol in der Symbolleiste. Android-Studio installiert die App auf Ihrem AVD und startet es und wenn alles in Ordnung ist mit der Einrichtung und Anwendung, wird es folgende Emulator-Fenster anzuzeigen -
Drücken Sie einfach die Fetch Vorschubtaste, um RSS-Feeds zu holen. Nach dem Pressen würde folgende Bildschirm angezeigt, der die RSS-Daten zeigen würde.
Android RSS Reader Tutorial
Drücken Sie einfach die Taste, um XML-Ergebnis, die auf gelegt wird sehenhttp://tutorialspoint.com/android/sampleXML.xml
Android RSS-Reader-Tutorial

Share on Google Plus

About ptjqatar

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.

0 التعليقات:

Kommentar veröffentlichen