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.No | Komponenten & Beschreibung |
---|---|
1 | Kanal
Dieses Element wird verwendet, um den RSS-Feed zu beschreiben
|
2 | Titel
Legt den Titel des Kanals
|
3 | Link
Definiert den Hyperlink zu dem Kanal
|
4 | Beschreibung
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.No | Verfahren & Beschreibung |
---|---|
1 | getAttributeCount ()
Diese Methode gibt nur die Anzahl der Attribute des aktuellen Start-Tag.
|
2 | getAttributeName (int index)
Diese Methode gibt den Namen des Attributs durch den Indexwert bestimmt.
|
3 | getColumnNumber ()
Diese Methode gibt den liefert die aktuelle Spaltennummer, beginnend bei 0.
|
4 | getDepth ()
Diese Methode liefert liefert die aktuelle Tiefe des Elements.
|
5 | getLineNumber ()
Gibt die aktuelle Zeilennummer, ab 1.
|
6 | getNamespace ()
Diese Methode gibt den Namensraum-URI des aktuellen Elements.
|
7 | getPrefix ()
Diese Methode gibt den Präfix des aktuellen Elements.
|
8 | getName ()
Diese Methode gibt den Namen des Tags.
|
9 | getText ()
Diese Methode gibt den Text für dieses spezielle Element.
|
10 | isWhitespace ()
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.
Schritte | Bezeichnung |
---|---|
1 | Sie 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. |
4 | Erstellen Sie eine neue Java-Datei unter src / HandleXML.java zu holen und zu parsen von XML-Daten. |
5 | Erstellen Sie eine neue Java-Datei unter src / second.java zum Ergebnis der XML anzuzeigen |
5 | Ändern AndroidManifest.xml die notwendigen Internet-Berechtigung hinzuzufügen. |
6 | Fü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 Ausfü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.
Drücken Sie einfach die Taste, um XML-Ergebnis, die auf gelegt wird sehenhttp://tutorialspoint.com/android/sampleXML.xml
0 التعليقات:
Kommentar veröffentlichen