Použite program Java SAXParser na načítanie a analýzu informačného kanála RSS pre Android. Tento tip v jazyku Java je určený pre vývojárov, ktorí v Androide začínajú, a obsahuje pokyny na nastavenie vývojového prostredia pre Android a krátky návod na aplikáciu.
Informačný kanál RSS je súbor vo formáte XML, ktorý sa používa na zverejnenie pravidelne aktualizovaných publikovaných informácií. Informačný kanál RSS je možné analyzovať (tj načítať a formátovať) pomocou analyzátora XML. Analyzátory kompatibilné s Java, ktoré sa používajú na analýzu XML v systéme Android, zahŕňajú:
android.content.res.XmlResourceParser
je analyzátor ťahu- Jednoduché API pre XML (SAX) sa nachádza v
org.xml.sax
balíček - Android ROME Feed Reader je čítačka RSS kanálov Google pre Android
- Android Feed Reader je ďalšia čítačka feedov RSS / Atom Google pre Android
- Android-rss je ľahká knižnica systému Android pre kanály RSS 2.0
Tento tip v jazyku Java predstavuje postupný úvod do používania aplikácie javax.xml.parsers.SAXParser
analyzovať informačný kanál RSS vo formáte XML. SAXParser je štandardná voľba, pretože je súčasťou rozhraní API systému Android v súprave Android SDK. Nastavíme vývojové prostredie, vytvoríme jednoduchú aplikáciu a feed pre Android na demonštračné účely a potom pomocou programu SAXParser naformátujeme feed pre Android. Aj keď sa predpokladá určitá znalosť vývoja aplikácií Java, tento tip je vhodný pre vývojárov, ktorí začínajú s vývojom mobilných aplikácií Java.
Nastavenie prostredia
Vykonaním nasledujúcich krokov nastavíte vývojové prostredie pre tento projekt:
- Nainštalujte Eclipse IDE.
- Nainštalujte si doplnok Android Development Tools (ADT) pre Eclipse. Doplnok ADT pre Eclipse poskytuje sadu rozšírení na vývoj aplikácií pre Android v Eclipse.
- Nainštalujte si platformu Android 2.3 SDK. Android SDK poskytuje nástroje na vývoj aplikácií pre Android.
- Vytvorte virtuálne zariadenie Android a nastavte cieľové prostredie ako Android 2.3.3. API úrovne 10.
Projekt Android
Vytvoríme ukážkový projekt pre Android na príjem informačného kanála RSS.
- Vo svojom Eclipse IDE vyberte Súbor -> Nové.
- V ponuke Nový vyberte Android -> Android Project, potom kliknite na Ďalej.
- V okne Nový projekt pre Android zadajte názov projektu (RSSFeed).
- Vyberte Android Platform 2.3 API 10 pre svoj cieľ zostavenia.
- V časti Vlastnosti zadajte názov aplikácie (opäť RSSFeed) a názov balíka (android.rss).
- Začiarknite políčko: Vytvoriť aktivitu a zadajte
Činnosť
trieda (RSS zdroj
). - Zadajte minimálnu verziu SDK ako 10 a kliknite na Ďalej; alebo ak ste vybrali Platform 3.0 API 11, zadajte minimálnu verziu SDK ako 11.
Všimnite si, že činnosť (Krok 6) predstavuje interakciu používateľa. Trieda rozširujúca Činnosť
trieda vytvorí okno pre používateľské rozhranie.
Výsledný projekt pre Android bude pozostávať z nasledujúcich súborov:
- Trieda aktivity (
RSS zdroj
), ktorá sa rozširujeČinnosť
. - A res / layout / main.xml súbor, ktorý určuje rozloženie komponentov používateľského rozhrania Android.
- An AndroidManifest.xml súbor, ktorý obsahuje konfiguráciu aplikácie, ako je napríklad názov balíka, hlavná aktivita, ktorá sa má spustiť pri spustení aplikácie pre Android, komponenty aplikácie, procesy, oprávnenia a minimálna úroveň API.
V res / layout / main.xml, zadajte rozloženie komponentov používateľského rozhrania Android. Vytvor LinearLayout
a nastaviť android: orientácia
ako „vertikálne
"Naším cieľom je zobraziť informačný kanál RSS ako textovú správu, takže pridajte a TextView
prvok pre názov informačného kanála RSS a zadajte android: text
ako Google RSS Feed. Pridaj TextView
prvok s ID "rss
"na zobrazenie informačného kanála RSS. Výpis 1 zobrazuje výsledný main.xml.
Zoznam 1. Zadanie rozloženia komponentov používateľského rozhrania systému Android
V AndroidManifest.xml, uveďte Činnosť
spustiť ako RSS zdroj
. Pre prístup k informačnému kanálu RSS z webu na zariadení Android musíme povoliť android.permission.INTERNET
povolenie v AndroidManifest.xml, ktorý umožňuje aplikáciám otvárať sieťové zásuvky. Pridajte nasledujúce používa-povolenie
element:
Minimálnu verziu systému Android zadajte pomocou uses-sdk
element. The RSS zdroj
činnosť, filter úmyslov
a akcia
sú špecifikované s prvkom aktivity a čiastkovými prvkami, ako je uvedené v zozname 2.
Zoznam 2. AndroidManifest.xml
Analyzujte kanál RSS pre Android
Ďalej použijeme javax.xml.parsers.SAXParser
analyzovať náš informačný kanál RSS. Začnite importom nasledujúcich tried:
javax.xml.parsers.SAXParser
javax.xml.parsers.SAXParserFactory
org.xml.sax.InputSource
org.xml.sax.XMLReader
org.xml.sax.helpers.DefaultHandler
Pripomeňme, že RSS zdroj
trieda predlžuje Činnosť
. V RSS zdroj
triedy, definujte premennú na výstup RSS kanálu:
Reťazec rssResult = "";
The onCreate (balík uložený v inštancii)
metóda je vyvolaná pri spustení aktivity. V onCreate
metódou, nastavte užívateľské rozhranie pomocou setContentView
metóda a prostriedok rozloženia:
setContentView (R.layout.main);
Ďalej použijeme findViewById
metóda definovania widgetu pre Android TextView
objekt v main.xml:
TextView rss = (TextView) findViewById (R.id.rss);
Teraz použite konštruktor pre URL
na zadanie adresy URL informačného kanála RSS:
URL rssUrl = nová URL ("// www.javaworld.com/index.xml");
Upozorňujeme, že informačný kanál RSS sa skladá z prvky pre položky krmiva. Každý
pozostáva z
názov, popis, odkaz, tvorca
a dátum
čiastkové prvky.
Vytvorte SAXParser
Vytvor SAXParserFactory
objekt pomocou statickej metódy novýInštancia
:
SAXParserFactory factory = SAXParserFactory.newInstance ();
Vytvor SAXParser
pomocou newSAXParser
metóda:
SAXParser saxParser = factory.newSAXParser ();
Získať XMLReader
z SAXParser
pomocou getXMLReader
metóda:
XMLReader xmlReader = saxParser.getXMLReader ();
Spracovanie udalostí SAX2
Ďalej musíme vytvoriť a DefaultHandler
na spracovanie udalostí SAX2. Udalosti SAX2 sú udalosti syntaktickej analýzy XML, ako je začiatok a koniec dokumentu / prvku a údaje o znakoch. Pre DefaultHandler
, najskôr vytvorte súkromnú triedu RSSHandler
ktorý rozširuje DefaultHandler
trieda. Definujte implementáciu pre metódy obsluhy udalostí startElement
a znakov
. Každá položka informačného kanála je obsiahnutá v element. V
startElement
metóda, ak localName
je „položka“ pridať localName
do rssResult Reťazec
:
rssResult = rssResult + localName + ":";
V znakov
metódou, pridajte znakové údaje do súboru rssResult Reťazec
. Použi nahradiť všetko
metóda na odstránenie všetkých medzier v informačnom kanáli RSS:
Reťazec cdata = nový Reťazec (ch, štart, dĺžka); if (item == true) rssResult = rssResult + (cdata.trim ()). replaceAll ("\ s +", "") + "\ t";
V onCreate
metóda, vytvorte RSSHandler
objekt:
RSSHandler rssHandler = nový RSSHandler ();
Nastaviť RSSHandler
ako obsluha obsahu v XMLReader
objekt pomocou setContentHandler
metóda:
xmlReader.setContentHandler (rssHandler);
Vytvorte InputSource
objekt z adresy URL informačného kanála RSS. Otvorte stream adresy URL pomocou openStream
metóda:
InputSource inputSource = nový InputSource (rssUrl.openStream ());
Analyzovať InputSource
pomocou analyzovať
metóda XMLReader
objekt:
xmlReader.parse (inputSource);
Nastaviť rssResult Reťazec
vygenerované z informačného kanála RSS na serveri TextView
element:
rss.setText (rssResult);
A tým sme skončili. Kompletný Činnosť
trieda RSS zdroj
sa zobrazuje v zozname 3.
Zoznam 3. RSSFeed
balík android.rss; import android.app.Activity; importovať android.os.Bundle; import java.util.Stack; import android.widget.TextView; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import java.util.StringTokenizer; import java.net.MalformedURLException; import java.net.URL; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import java.io.IOException; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; importovať org.xml.sax.Attributes; import org.xml.sax.SAXException; importovať org.xml.sax.helpers.DefaultHandler; verejná trieda RSSFeed rozširuje aktivitu {/ ** Zavolá sa pri prvom vytvorení aktivity. * / String rssResult = ""; boolean item = false; @Override public void onCreate (bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.main); TextView rss = (TextView) findViewById (R.id.rss); skúsiť {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); } / ** public String removeSpaces (String s) {StringTokenizer st = nový StringTokenizer (s, "", false); Reťazec; while (st.hasMoreElements ()) t + = st.nextElement (); návrat t; } * / private class RSSHandler extends DefaultHandler {public void startElement (String uri, String localName, String qName, Attributes attrs) throws 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) throws SAXException {} public void characters (char [] ch, int start, int length) throws SAXException {String cdata = new String (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). replaceAll ("\ s +", "") + "\ t"; }}}
Spustená aplikácia pre Android
Teraz sa pozrime, čo sa stane, keď spustíme aplikáciu pre Android. Najskôr kliknite pravým tlačidlom myši na aplikáciu RSSFeed vo svojom Eclipse IDE a vyberte Spustiť ako -> Aplikácia pre Android.
Vaše výsledky sa budú mierne líšiť v závislosti od konfigurácie: Ak ste nakonfigurovali Android Platform 11 a API 3.0, spustí sa Platforma AVD. Ak ste vybrali platformu Android 10 a API 2.3, spustí sa platforma 10 AVD. Aplikácia RSSFeed by sa mala v každom prípade zobraziť ako nasadená na správnom zariadení so systémom Android.
Teraz kliknite na aplikáciu RSSFeed, aby sa zobrazil informačný kanál RSS, ktorý by sa mal zobraziť, ako je to znázornené na obrázku 1.
Na záver
V tomto tipe pre Java ste sa naučili, ako nastaviť RSS kanál na Androide pomocou SAXParser
, ktorá sa dodáva spolu s Android SDK. Túto aplikáciu pre akýkoľvek informačný kanál RSS môžete upraviť zmenou adresy URL RSS. Urobili sme tiež jednoduché cvičenie pri formátovaní informačného kanála RSS odstránením nadbytočných medzier medzi uvedenými článkami.
Deepak Vohra je programátorom Java s certifikáciou Sun, spoločnosťou Sun Certified Web Component Developer a predtým publikoval články o časopisoch XML Journal, Java Developer's Journal, WebLogic Journal a Java.net.
Získajte viac informácií o tejto téme
Získajte viac informácií o Androide.
- Stiahnite si Android SDK.
- Stiahnite si Android Development Tools (ADT).
- Stiahnite si JDK
- Stiahnite si najnovšiu verziu Eclipse pre Java EE.
Viac od JavaWorld
- Pozrite sa na výskumnú zónu Java Java pre mobilnú Java, kde nájdete ďalšie články, ako je tento.
- Navštívte mapu stránok JavaWorld, kde nájdete kompletný zoznam výskumných centier zameraných na klientske, podnikové a základné vývojové nástroje a témy Java.
- Java Technology Insider spoločnosti JavaWorld je séria podcastov, ktorá vám umožní učiť sa od odborníkov na technológiu Java na ceste do práce.
Tento príbeh, „Java Tip: Nastavte RSS kanál pre svoju aplikáciu pre Android“, pôvodne publikoval JavaWorld.