Uporabite Javin SAXParser za pridobivanje in razčlenitev vira RSS za Android. Ta namig za Java je namenjen razvijalcem, ki so novi za Android, in vključuje navodila za nastavitev razvojnega okolja za Android ter kratko vadnico aplikacije.
Vir RSS je datoteka v formatu XML, ki se uporablja za objavo redno posodobljenih sindiciranih informacij. Vir RSS je mogoče razčleniti (torej prebrati in formatirati) z uporabo razčlenjevalnika XML. Razčlenjevalniki, združljivi z Javo, ki se uporabljajo za razčlenitev XML v sistemu Android, vključujejo:
android.content.res.XmlResourceParser
je razstavni parser- Preprost API za XML (SAX) najdete v
org.xml.sax
paket - Android ROME Feed Reader je Googlov bralnik virov RSS za Android
- Android Feed Reader je še en Googlov bralnik virov RSS / Atom za Android
- Android-rss je lahka knjižnica Android za vire RSS 2.0
Ta namig Java je korak za korakom uvod v uporabo javax.xml.parsers.SAXParser
za razčlenitev vira RSS v obliki XML. SAXParser je standardna izbira, ker je vključen v API-je za Android v Android SDK. Vzpostavili bomo razvojno okolje, ustvarili preprosto aplikacijo za Android in vir za predstavitvene namene ter nato s SAXParser formatirali vir za Android. Čeprav se domneva, da je razvoj aplikacij Java poznan, je ta nasvet primeren za razvijalce, ki so novi na področju mobilnega razvoja Java.
Nastavitev okolja
Za vzpostavitev razvojnega okolja za ta projekt izvedite naslednje korake:
- Namestite Eclipse IDE.
- Namestite vtičnik Android Development Tools (ADT) za Eclipse. Vtičnik ADT za Eclipse ponuja nabor razširitev za razvoj aplikacij za Android v programu Eclipse.
- Namestite platformo Android 2.3 SDK. Android SDK ponuja orodja za razvoj aplikacij za Android.
- Ustvarite navidezno napravo Android in ciljno okolje nastavite kot Android 2.3.3. API Level 10.
Projekt Android
Ustvarili bomo primer projekta Android za prejemanje vira RSS.
- V vašem Eclipse IDE izberite Datoteka -> Novo.
- V Novi izberite Android -> Android Project, nato kliknite Naprej.
- V oknu New Android Project določite ime projekta (RSSFeed).
- Za cilj izdelave izberite Android Platform 2.3 API 10.
- V lastnostih določite ime aplikacije (spet RSSFeed) in ime paketa (android.rss).
- Potrdite polje: Ustvari dejavnost in določite
Dejavnost
razred (RssFeed
). - Določite najmanjšo različico SDK kot 10 in kliknite Naprej; ali če ste izbrali API 11 Platform 3.0, določite najmanjšo različico SDK kot 11.
Upoštevajte, da je dejavnosti (6. korak) predstavlja interakcijo uporabnika. Razred, ki razširja Dejavnost
razred ustvari okno za uporabniški vmesnik.
Nastali projekt Android bo sestavljen iz naslednjih datotek:
- Razred dejavnosti (
RSSFeed
), ki se raztezaDejavnost
. - A res / layout / main.xml datoteka, ki določa postavitev komponent uporabniškega vmesnika Android.
- An AndroidManifest.xml datoteka, ki vsebuje konfiguracijo aplikacije, na primer ime paketa, glavno dejavnost, ki se zažene ob zagonu aplikacije Android, komponente aplikacije, procese, dovoljenja in najmanjšo raven API-ja.
V res / layout / main.xml, določite postavitev komponent uporabniškega vmesnika Android. Ustvariti LinearLayout
in nastavite android: usmerjenost
kot "navpično
"Naš cilj je prikazati vir RSS kot besedilno sporočilo, zato dodajte TextView
element za naslov vira RSS in navedite android: besedilo
kot Google RSS Feed. Dodajte a TextView
element z id "rss
"za prikaz vira RSS. Seznam 1 prikazuje nastali main.xml.
Seznam 1. Določitev postavitve komponent uporabniškega vmesnika Android
V AndroidManifest.xml, določite Dejavnost
za zagon kot RSSFeed
. Za dostop do vira RSS iz spleta v napravi Android moramo omogočiti android.permission.INTERNET
dovoljenje v AndroidManifest.xml, ki aplikacijam omogoča odpiranje omrežnih vtičnic. Dodajte naslednje uporabnik-dovoljenje
element:
Navedite najmanjšo različico Androida z uporablja-sdk
element. The RSSFeed
dejavnost, filter namere
, in ukrepanje
so podani z elementom dejavnosti in podelementi, kot je prikazano v seznamu 2.
Seznam 2. AndroidManifest.xml
Razčlenite vir RSS za Android
Nato bomo uporabili javax.xml.parsers.SAXParser
za razčlenitev našega vira RSS. Začnite z uvozom naslednjih razredov:
javax.xml.parsers.SAXParser
javax.xml.parsers.SAXParserFactory
org.xml.sax.InputSource
org.xml.sax.XMLReader
org.xml.sax.helpers.DefaultHandler
Spomnimo se, da RSSFeed
razred se razširi Dejavnost
. V RSSFeed
razred, določite spremenljivko za izhod vira RSS:
Niz rssResult = "";
The onCreate (Bundle savedInstanceState)
metoda se sproži ob zagonu dejavnosti. V onCreate
uporabniški vmesnik nastavite z setContentView
metoda in vir postavitve:
setContentView (R.layout.main);
Nato uporabimo findViewById
metoda za določanje pripomočka Android TextView
objekt v main.xml:
TextView rss = (TextView) findViewById (R.id.rss);
Zdaj uporabite konstruktor za URL
da določite URL vira RSS:
URL rssUrl = nov URL ("// www.javaworld.com/index.xml");
Upoštevajte, da je vir RSS sestavljen iz elementi za krmne postavke. Vsak
sestoji iz
naslov, opis, povezava, ustvarjalec
, in datum
podelementi.
Ustvari SAXParser
Ustvariti SAXParserFactory
objekt s statično metodo newInstance
:
SAXParserFactory factory = SAXParserFactory.newInstance ();
Ustvariti SAXParser
uporabljati newSAXParser
metoda:
SAXParser saxParser = factory.newSAXParser ();
Pridobite XMLReader
Iz SAXParser
uporabljati getXMLReader
metoda:
XMLReader xmlReader = saxParser.getXMLReader ();
Obravnava dogodkov SAX2
Nato moramo ustvariti a DefaultHandler
za obdelavo dogodkov SAX2. Dogodki SAX2 so dogodki razčlenjevanja XML, kot so začetek in konec dokumenta / elementa ter podatki o znakih. Za DefaultHandler
, najprej ustvarite zasebni razred RSSHandler
ki razširja DefaultHandler
razred. Določite izvedbo za metode obdelave dogodkov startElement
in znakov
. Vsaka postavka vira je v datoteki element. V
startElement
metoda, če je localName
je "element" dodajte localName
do niz rssResult
:
rssResult = rssResult + localName + ":";
V znakov
, dodajte znakovne podatke v niz rssResult
. Uporabi replaceAll
metoda za odstranitev vseh odvečnih presledkov v viru RSS:
String cdata = nov niz (ch, začetek, dolžina); if (item == true) rssResult = rssResult + (cdata.trim ()). replaceAll ("\ s +", "") + "\ t";
V onCreate
, ustvarite RSSHandler
objekt:
RSSHandler rssHandler = nov RSSHandler ();
Nastavite RSSHandler
kot vodnik vsebine na XMLReader
predmet z uporabo setContentHandler
metoda:
xmlReader.setContentHandler (rssHandler);
Ustvari InputSource
predmet iz URL-ja za vir RSS. Odprite tok URL s pomočjo openStream
metoda:
InputSource inputSource = nov InputSource (rssUrl.openStream ());
Razčleni InputSource
uporabljati razčleni
metoda XMLReader
objekt:
xmlReader.parse (inputSource);
Nastavite niz rssResult
ustvarjen iz vira RSS na TextView
element:
rss.setText (rssResult);
In s tem smo končali. Celoten Dejavnost
razred RSSFeed
je prikazano na seznamu 3.
Seznam 3. RSSFeed
paket android.rss; uvoz android.app.Activity; uvoz android.os.Bundle; uvoz java.util.Stack; uvoz android.widget.TextView; uvoz javax.xml.parsers.SAXParser; uvoz javax.xml.parsers.SAXParserFactory; uvoz java.util.StringTokenizer; uvoz java.net.MalformedURLException; uvoz java.net.URL; uvoz org.xml.sax.InputSource; uvoz org.xml.sax.XMLReader; import java.io.IOException; uvoz org.xml.sax.SAXException; uvoz javax.xml.parsers.ParserConfigurationException; uvoz org.xml.sax.Attributes; uvoz org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; javni razred RSSFeed razširja aktivnost {/ ** Pokliče se, ko je dejavnost prvič ustvarjena. * / Niz rssResult = ""; logična postavka = false; @Override javna praznina onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.main); TextView rss = (TextView) findViewById (R.id.rss); poskusite {URL rssUrl = nov URL ("// www.javaworld.com/index.xml"); SAXParserFactory factory = SAXParserFactory.newInstance (); SAXParser saxParser = factory.newSAXParser (); XMLReader xmlReader = saxParser.getXMLReader (); RSSHandler rssHandler = nov RSSHandler (); xmlReader.setContentHandler (rssHandler); InputSource inputSource = nov InputSource (rssUrl.openStream ()); xmlReader.parse (inputSource); } catch (IOException e) {rss.setText (e.getMessage ()); } catch (SAXException e) {rss.setText (e.getMessage ()); } catch (ParserConfigurationException e) {rss.setText (e.getMessage ()); } rss.setText (rssResult); } / ** javni niz removeSpaces (String s) {StringTokenizer st = nov StringTokenizer (s, "", false); Vrvica; while (st.hasMoreElements ()) t + = st.nextElement (); vrnitev t; } * / private class RSSHandler razširi DefaultHandler {public void startElement (String uri, String localName, String qName, Attributes attrs) vrže SAXException {if (localName.equals ("item")) item = true; if (! localName.equals ("item") && item == true) rssResult = rssResult + localName + ":"; } public void endElement (String namespaceURI, String localName, String qName) vrže SAXException {} javni void znaki (char [] ch, int start, int length) vrže SAXException {String cdata = new String (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). replaceAll ("\ s +", "") + "\ t"; }}}
Zagon aplikacije Android
Zdaj pa poglejmo, kaj se zgodi, ko zaženemo aplikacijo Android. Najprej z desno miškino tipko kliknite aplikacijo RSSFeed v IDE Eclipse in izberite Zaženi kot -> Aplikacija Android.
Rezultati se bodo nekoliko razlikovali glede na konfiguracijo: če ste konfigurirali Android Platform 11 in API 3.0, se bo zagnala platforma 11 AVD. Če ste izbrali platformo Android 10 in API 2.3, se bo zagnal AVD platforme 10. Kakor koli že, aplikacija RSSFeed mora biti prikazana kot razporejena v ustrezni napravi Android.
Zdaj kliknite aplikacijo RSSFeed, da se prikaže vir RSS, ki naj bi se prikazal, kot je prikazano na sliki 1.
V zaključku
V tem nasvetu za Java ste se naučili, kako nastaviti RSS v Androidu z uporabo SAXParser
, ki je priložen paketu SDK za Android. To aplikacijo lahko spremenite za kateri koli vir RSS s spreminjanjem URL-ja RSS. Naredili smo tudi preprosto vajo pri oblikovanju vira RSS, tako da smo odstranili odvečne presledke med navedenimi članki.
Deepak Vohra je programska oprema Java s certifikatom Sun, razvijalec spletnih komponent, ki je certificiran s strani Sun, in je že objavljal članke v XML Journal, Java Developer's Journal, WebLogic Journal in Java.net.
Preberite več o tej temi
Preberite več o Androidu.
- Prenesite Android SDK.
- Prenesite orodja za razvoj Android (ADT).
- Prenesite JDK
- Prenesite najnovejšo različico programa Eclipse za Java EE.
Več iz JavaWorlda
- Za več podobnih člankov si oglejte raziskovalno območje Java Java Mobile Mobile.
- Za celoten seznam raziskovalnih središč, osredotočenih na odjemalska, podjetniška in osnovna orodja in teme Java, si oglejte JavaWorld Site Map.
- Java Technology Insider JavaWorld je serija podcastov, ki vam omogoča, da se na poti na delo učite od strokovnjakov za tehnologijo Java.
To zgodbo, "Nasvet Java: nastavite vir RSS za svojo aplikacijo za Android", je prvotno objavil JavaWorld.