Käytä Java's SAXParser -sovellusta RSS-syötteen hakemiseen ja jäsentämiseen Androidille. Tämä Java-vinkki on kehittäjille, jotka ovat uusia Androidissa, ja sisältää ohjeet Android-kehitysympäristön määrittämiseen ja lyhyen sovelluksen opetusohjelman.
RSS-syöte on XML-muotoinen tiedosto, jota käytetään säännöllisesti päivitettävien jaettujen tietojen julkaisemiseen. RSS-syöte voidaan jäsentää (ts. Lukea ja alustaa) käyttämällä XML-jäsennintä. Java-yhteensopivia jäsentimiä, joita käytetään XML: n jäsentämiseen Androidissa, ovat:
android.content.res.XmlResourceParser
on vedon jäsennin- Yksinkertainen sovellusliittymä XML: lle (SAX) löytyy
org.xml.sax
paketti - Android ROME Feed Reader on Googlen RSS-syötteenlukija Androidille
- Android Feed Reader on toinen Google RSS / Atom -syötteenlukija Androidille
- Android-rss on kevyt Android-kirjasto RSS 2.0 -syötteille
Tämä Java-vinkki on vaiheittainen esittely javax.xml.parsers.SAXParser
jäsentää RSS-syöte XML-muodossa. SAXParser on vakiovalinta, koska se sisältyy Android-sovellusliittymiin Android SDK: ssa. Perustamme kehitysympäristön, luomme yksinkertaisen Android-sovelluksen ja syötteen esittelytarkoituksiin ja muotoilemme sitten syötteen Androidille SAXParserilla. Vaikka oletetaan, että Java-sovelluskehitys on jonkin verran perehtynyt, tämä vinkki soveltuu kehittäjille, jotka ovat uusia Java-mobiilikehityksessä.
Ympäristön asettaminen
Määritä tämän projektin kehitysympäristö seuraavasti:
- Asenna Eclipse IDE.
- Asenna Android-kehitystyökalujen (ADT) laajennus Eclipseä varten. ADT-laajennus Eclipse-sovellukseen tarjoaa joukon laajennuksia Android-sovellusten kehittämiseen Eclipse-sovelluksessa.
- Asenna Android 2.3 SDK -alusta. Android SDK tarjoaa työkaluja Android-sovellusten kehittämiseen.
- Luo Android-virtuaalilaite ja aseta Target-ympäristöksi Android 2.3.3. API-taso 10.
Android-projekti
Luomme esimerkin Android-projektista RSS-syötteen vastaanottamiseksi.
- Valitse Eclipse IDE -valikossa Tiedosto -> Uusi.
- Kohdassa Uusi valitse Android -> Android-projektija napsauta sitten Seuraava.
- Määritä Uusi Android-projekti -ikkunassa projektin nimi (RSSFeed).
- Valitse rakennuskohteeksi Android Platform 2.3 API 10.
- Määritä Ominaisuudet-sovelluksessa sovelluksen nimi (jälleen RSSFeed) ja paketin nimi (android.rss).
- Valitse valintaruutu: Luo toiminta ja määritä
Toiminta
luokka (RssFeed
). - Määritä SDK: n vähimmäisversioksi 10 ja napsauta Seuraava; tai, jos olet valinnut Platform 3.0 -sovellusliittymän 11, määritä SDK: n vähimmäisversioksi 11.
Huomaa, että toiminta (Vaihe 6) edustaa käyttäjän vuorovaikutusta. Luokan laajennus Toiminta
luokka luo ikkunan käyttöliittymälle.
Tuloksena oleva Android-projekti koostuu seuraavista tiedostoista:
- Aktiviteettiluokka (
RSS-syöte
), joka ulottuuToiminta
. - A res / layout / main.xml tiedosto, joka määrittää Android-käyttöliittymän komponenttien asettelun.
- An AndroidManifest.xml tiedosto, joka sisältää sovelluksen kokoonpanon, kuten paketin nimen, tärkeimmän toiminnan, joka käynnistetään Android-sovelluksen käynnistyessä, sovelluksen komponentit, prosessit, käyttöoikeudet ja API: n vähimmäistason.
Sisään res / layout / main.xml, määritä Android-käyttöliittymän komponenttien asettelu. Luo Lineaarinen asettelu
ja aseta android: suunta
kuten "pystysuora
"Tavoitteenamme on näyttää RSS - syöte tekstiviestinä, joten lisää a Tekstinäkymä
RSS-syötteen otsikon elementti ja määritä android: teksti
Google RSS -syötteenä. Lisää Tekstinäkymä
elementti, tunnuksella "rss
"näyttääksesi RSS-syötteen. Luettelossa 1 näkyy tuloksena oleva main.xml.
Luettelo 1. Android-käyttöliittymän komponenttien asettelun määrittäminen
Sisään AndroidManifest.xml, määritä Toiminta
käynnistää nimellä RSS-syöte
. Jotta voisimme käyttää RSS-syötettä verkosta Android-laitteella, meidän on otettava käyttöön android.permission.INTERNET
lupa sisään AndroidManifest.xml, jonka avulla sovellukset voivat avata verkkopistokkeita. Lisää seuraava käyttöoikeus
elementti:
Määritä vähintään Android-versio uses-sdk
elementti. RSS-syöte
toiminta aikomussuodatin
ja toiminta
määritetään aktiviteetti- ja alielementeillä, kuten luettelossa 2 on esitetty.
Listaus 2. AndroidManifest.xml
Jäsennä Androidin RSS-syöte
Seuraavaksi käytämme javax.xml.parsers.SAXParser
jäsentää RSS-syötteemme. Aloita tuomalla seuraavat luokat:
javax.xml.parsers.SAXParser
javax.xml.parsers.SAXParserFactory
org.xml.sax.InputSource
org.xml.sax.XMLReader
org.xml.sax.helpers.DefaultHandler
Muistakaa, että RSS-syöte
luokka jatkuu Toiminta
. vuonna RSS-syöte
luokka, määritä muuttuja RSS-syötteen tuottamiseksi:
Merkkijono rssResult = "";
onCreate (Bundle savedInstanceState)
-menetelmää käytetään, kun aktiviteetti aloitetaan. vuonna onCreate
, aseta käyttöliittymä setContentView
menetelmä ja asetteluresurssi:
setContentView (R.layout.main);
Seuraavaksi käytämme findViewById
menetelmä määrittää Android-widget Tekstinäkymä
objekti main.xml-tiedostossa:
TextView rss = (TextView) findViewById (R.id.rss);
Käytä nyt konstruktoria URL
määrittääksesi RSS-syötteen URL-osoitteen:
URL rssUrl = uusi URL ("// www.javaworld.com/index.xml");
Huomaa, että RSS-syöte koostuu syötekohteiden elementit. Jokainen
koostuu
otsikko, kuvaus, linkki, luoja
ja Päivämäärä
alielementit.
Luo SAXParser
Luo SAXParserFactory
staattisella menetelmällä newInstance
:
SAXParserFactory-tehdas = SAXParserFactory.newInstance ();
Luo SAXParser
käyttämällä uusiSAXParser
menetelmä:
SAXParser saxParser = tehdas.uusiSAXParser ();
Hanki XMLReader
alkaen SAXParser
käyttämällä getXMLReader
menetelmä:
XMLReader xmlReader = saxParser.getXMLReader ();
SAX2-tapahtumien käsittely
Seuraavaksi meidän on luotava Oletuskäsittelijä
käsitellä SAX2-tapahtumia. SAX2-tapahtumat ovat XML-jäsentäviä tapahtumia, kuten asiakirjan / elementin alku ja loppu sekä merkkitiedot. Varten Oletuskäsittelijä
, luo ensin yksityinen luokka RSSKäsittelijä
joka laajentaa Oletuskäsittelijä
luokassa. Määritä tapahtumankäsittelymenetelmien toteutus startElement
ja merkkiä
. Jokainen syötekohde sisältyy elementti. vuonna
startElement
menetelmä, jos localName
on "kohde" lisätä localName
että rssTulosmerkkijono
:
rssResult = rssResult + localName + ":";
vuonna merkkiä
-menetelmällä, lisää merkkitiedot rssTulosmerkkijono
. Käytä korvaa kaikki
tapa poistaa kaikki ylimääräiset välilyönnit RSS-syötteestä:
Merkkijonodata = uusi merkkijono (ch, alku, pituus); if (item == true) rssResult = rssResult + (cdata.trim ()). korvaaAll ("\ s +", "") + "\ t";
vuonna onCreate
-menetelmällä, luo RSSKäsittelijä
esine:
RSSHandler rssHandler = uusi RSSHandler ();
Aseta RSSKäsittelijä
sisällönkäsittelijänä XMLReader
objektin avulla setContentHandler
menetelmä:
xmlReader.setContentHandler (rssHandler);
Luo InputSource
RSS-syötteen URL-osoitteesta. Avaa URL-virta käyttämällä openStream
menetelmä:
InputSource inputSource = uusi InputSource (rssUrl.openStream ());
Jäsennä InputSource
käyttämällä jäsentää
menetelmä XMLReader
esine:
xmlReader.parse (inputSource);
Aseta rssTulosmerkkijono
luodaan RSS-syötteestä Tekstinäkymä
elementti:
rss.setText (rssResult);
Ja sen kanssa olemme valmiit. Täydellinen Toiminta
luokassa RSS-syöte
näkyy luettelossa 3.
Listaus 3. RSSFeed
paketti android.rss; tuoda android.app.Activity; tuonti android.os.Bundle; tuo java.util.Stack; tuo android.widget.TextView; tuo javax.xml.parsers.SAXParser; tuo javax.xml.parsers.SAXParserFactory; tuo java.util.StringTokenizer; tuo java.net.MalformedURLException; tuo java.net.URL; tuo org.xml.sax.InputSource; tuo org.xml.sax.XMLReader; tuo java.io.IOException; tuo org.xml.sax.SAXException; tuo javax.xml.parsers.ParserConfigurationException; tuo org.xml.sax.Attributes; tuo org.xml.sax.SAXException; tuo org.xml.sax.helpers.DefaultHandler; julkinen luokka RSSFeed laajentaa toimintaa {/ ** Soitetaan, kun toiminto luodaan ensimmäisen kerran. * / Merkkijono rssResult = ""; totuusarvo = väärä; @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.main); TextView rss = (TextView) findViewById (R.id.rss); kokeile {URL rssUrl = uusi URL ("// www.javaworld.com/index.xml"); SAXParserFactory-tehdas = SAXParserFactory.newInstance (); SAXParser saxParser = tehdas.uusiSAXParser (); XMLReader xmlReader = saxParser.getXMLReader (); RSSHandler rssHandler = uusi RSSHandler (); xmlReader.setContentHandler (rssHandler); InputSource inputSource = uusi 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 = new StringTokenizer (s, "", false); Merkkijono; while (st.hasMoreElements ()) t + = st.nextElement (); paluu t; } * / yksityisluokka RSSHandler laajentaa DefaultHandler {public void startElement (String uri, String localName, String qName, Attributes attrs) heittää 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) heittää SAXException {} public void -merkit (char [] ch, int start, int length) heittää SAXException {String cdata = uusi merkkijono (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). korvaaAll ("\ s +", "") + "\ t"; }}}
Suorita Android-sovellus
Katsotaan nyt, mitä tapahtuu, kun suoritamme Android-sovelluksen. Napsauta ensin hiiren kakkospainikkeella RSSFeed-sovellusta Eclipse IDE -laitteessasi ja valitse Suorita nimellä -> Android-sovellus.
Tulokset vaihtelevat hieman kokoonpanon mukaan: Jos olet määrittänyt Android Platform 11: n ja API 3.0: n, Platform 11 AVD käynnistyy. Jos olet valinnut Android-alustan 10 ja API 2.3, alustan 10 AVD käynnistyy. Kummassakin tapauksessa RSSFeed-sovelluksen tulisi näkyä asennettuna oikealle Android-laitteelle.
Napsauta nyt RSSFeed-sovellusta saadaksesi näkyviin RSS-syötteen, jonka pitäisi näkyä kuvan 1 mukaisesti.
Tiivistettynä
Tässä Java-vinkissä opit RSS-syötteen määrittämisen Androidille SAXParser
, joka toimitetaan Android SDK: n mukana. Voit muokata tätä sovellusta mille tahansa RSS-syötteelle muuttamalla RSS-URL-osoitetta. Teimme myös yksinkertaisen harjoituksen RSS-syötteen muotoilussa poistamalla ylimääräiset välit lueteltujen artikkeleiden väliltä.
Deepak Vohra on Sun-sertifioitu Java-ohjelmoija, Sun-sertifioitu verkkokomponenttikehittäjä, ja on aiemmin julkaissut artikkeleita XML Journalissa, Java Developer Journalissa, WebLogic Journalissa ja Java.netissä.
Lisätietoja tästä aiheesta
Lisätietoja Androidista.
- Lataa Android SDK.
- Lataa Android-kehitystyökalut (ADT).
- Lataa JDK
- Lataa uusin Eclipse for Java EE -versio.
Lisää JavaWorldista
- Katso lisää tämänkaltaisia artikkeleita JavaWorldin Mobile Java -tutkimusalueelta.
- Katso JavaWorld-sivustokartasta täydellinen luettelo tutkimuskeskuksista, jotka keskittyvät asiakaspuolen, yrityksen ja ydin Java-kehitystyökaluihin ja -aiheisiin.
- JavaWorldin Java Technology Insider on podcast-sarja, jonka avulla voit oppia Java-tekniikan asiantuntijoilta matkalla töihin.
Tämän tarinan "Java-vinkki: Määritä RSS-syöte Android-sovelluksellesi" julkaisi alun perin JavaWorld.