Programavimas

„Java“ patarimas: nustatykite RSS kanalą savo „Android“ programai

Norėdami gauti ir išanalizuoti „Android“ skirtą RSS kanalą, naudokite „Java SAXParser“. Šis „Java“ patarimas skirtas naujiems „Android“ kūrėjams. Jame pateikiamos „Android“ kūrimo aplinkos nustatymo instrukcijos ir trumpa programos pamoka.

RSS sklaidos kanalas yra XML formato failas, naudojamas periodiškai atnaujinamai sindikuotai informacijai skelbti. RSS sklaidos kanalą galima analizuoti (tai yra skaityti ir suformatuoti) naudojant XML analizatorių. „Java“ suderinami analizatoriai, naudojami analizuojant XML sistemoje „Android“, yra šie:

  • android.content.res.XmlResourceParser yra traukimo analizatorius
  • Paprasta API, skirta XML (SAX), yra org.xml.sax pakuotė
  • „Android ROME Feed Reader“ yra „Google“ RSS sklaidos kanalų skaitytuvas, skirtas „Android“
  • „Android“ sklaidos kanalų skaitytuvas yra dar vienas „Android“ skirtas „Google RSS / Atom“ sklaidos kanalų skaitytuvas
  • „Android-rss“ yra lengva „Android“ biblioteka, skirta RSS 2.0 kanalams

Šis „Java“ patarimas yra nuoseklus įvadas į „ javax.xml.parsers.SAXParser išanalizuoti RSS kanalą XML formatu. „SAXParser“ yra standartinis pasirinkimas, nes jis yra įtrauktas į „Android“ API į „Android SDK“. Sukursime kūrimo aplinką, sukursime paprastą „Android“ programą ir sklaidos kanalą demonstravimo tikslais, tada naudosime „SAXParser“, kad suformatuotumėte „Android“ sklaidos kanalą. Nors manoma, kad yra šiek tiek susipažinęs su „Java“ programų kūrimu, šis patarimas tinka kūrėjams, naujiems „Java“ mobiliesiems kūrėjams.

Aplinkos sutvarkymas

Norėdami sukurti šio projekto kūrimo aplinką, atlikite šiuos veiksmus:

  1. Įdiekite „Eclipse IDE“.
  2. Įdiekite „Eclipse“ skirtą „Android“ kūrimo įrankių (ADT) papildinį. ADT papildinys, skirtas „Eclipse“, suteikia plėtinių rinkinį, skirtą „Android“ programoms kurti „Eclipse“.
  3. Įdiekite „Android 2.3 SDK“ platformą. „Android SDK“ yra įrankiai, skirti kurti „Android“ programas.
  4. Sukurkite „Android“ virtualų įrenginį ir nustatykite tikslinę aplinką kaip „Android 2.3.3“. API 10 lygis.

„Android“ projektas

Sukursime „Android“ projekto pavyzdį, kad gautumėte RSS kanalą.

  1. „Eclipse IDE“ pasirinkite Failas -> Naujas.
  2. Skiltyje Nauja pasirinkti „Android“ -> „Android“ projektas, tada spustelėkite Pirmyn.
  3. Lange „Naujas„ Android “projektas“ nurodykite projekto pavadinimą (RSSFeed).
  4. „Build Target“ pasirinkite „Android Platform 2.3 API 10“.
  5. „Ypatybėse“ nurodykite programos pavadinimą (vėlgi, RSSFeed) ir paketo pavadinimą (android.rss).
  6. Pažymėkite žymimąjį laukelį: Sukurti veiklą ir nurodykite Veikla klasė (RssFeed).
  7. Nurodykite mažiausią SDK versiją kaip 10 ir spustelėkite Pirmyn; arba, jei pasirinkote „Platform 3.0 API 11“, nurodykite mažiausią SDK versiją kaip 11.

Atkreipkite dėmesį, kad veikla (6 žingsnis) reiškia vartotojo sąveiką. Klasė, pratęsianti Veikla klasė sukuria vartotojo sąsajos langą.

Gautą „Android“ projektą sudarys šie failai:

  1. Veiklos klasė (RSSFeed), kuris tęsiasi Veikla.
  2. A res / layout / main.xml failas, kuriame nurodomas „Android“ vartotojo sąsajos komponentų išdėstymas.
  3. An „AndroidManifest.xml“ failas, kuriame yra programos konfigūracija, pvz., paketo pavadinimas, pagrindinė veikla, kurią reikia paleisti paleidus „Android“ programą, programos komponentai, procesai, leidimai ir minimalus API lygis.

Į res / layout / main.xml, nurodykite „Android“ vartotojo sąsajos komponentų išdėstymą. Sukurti Linijinis išdėstymas ir nustatykite android: orientacija kaip "vertikalus"Mūsų tikslas yra rodyti RSS srautą kaip tekstinį pranešimą, todėl pridėkite „TextView“ RSS sklaidos kanalo pavadinimo elementą ir nurodykite android: tekstas kaip „Google RSS“ kanalą. Pridėti „TextView“ elementas su ID "rss", kad būtų rodomas RSS sklaidos kanalas. 1 sąraše rodomas gautas main.xml.

Sąrašas 1. Nurodykite „Android“ vartotojo sąsajos komponentų išdėstymą

Į „AndroidManifest.xml“, nurodykite Veikla paleisti kaip RSSFeed. Norėdami pasiekti RSS srautą iš žiniatinklio „Android“ įrenginyje, turime įgalinti android.permission.INTERNET leidimas „AndroidManifest.xml“, leidžiančią programoms atidaryti tinklo lizdus. Pridėkite šiuos duomenis naudoja-leidimą elementas:

Nurodykite mažiausią „Android“ versiją naudodami naudoja-sdk elementas. RSSFeed veikla, ketinimas-filtrasir veiksmas yra nurodomi su veiklos elementu ir papunkčiais, kaip parodyta 2 sąraše.

Sąrašas 2. „AndroidManifest.xml“

Analizuokite „Android“ skirtą RSS kanalą

Toliau mes naudosime javax.xml.parsers.SAXParser išanalizuoti mūsų RSS kanalą. Pradėkite importuodami šias klases:

  • javax.xml.parsers.SAXParser
  • javax.xml.parsers.SAXParserFactory
  • org.xml.sax.InputSource
  • org.xml.sax.XMLReader
  • org.xml.sax.helpers.DefaultHandler

Prisiminkime, kad RSSFeed klasė tęsiasi Veikla. Viduje konors RSSFeed klasėje, apibrėžkite kintamąjį, kad išvestumėte RSS kanalą:

Eilutė rssResult = "";

onCreate (paketas išsaugotasInstanceState) metodas yra naudojamas, kai pradedama veikla. Viduje konors onCreate metodą, nustatykite vartotojo sąsają naudodami „setContentView“ metodas ir maketo šaltinis:

setContentView (R.layout.main);

Toliau mes naudojame findViewById metodas apibrėžti „Android“ valdiklį „TextView“ objektas main.xml:

TextView rss = (TextView) findViewById (R.id.rss);

Dabar naudokite konstruktorių URL norėdami nurodyti RSS sklaidos kanalo URL:

URL rssUrl = naujas URL ("// www.javaworld.com/index.xml");

Atkreipkite dėmesį, kad RSS sklaidos kanalą sudaro pašarų elementų elementai. Kiekvienas susideda iš pavadinimas, aprašymas, nuoroda, kūrėjasir data poelementai.

Sukurkite „SAXParser“

Sukurti „SAXParserFactory“ objektas naudojant statinį metodą newInstance:

„SAXParserFactory“ gamykla = SAXParserFactory.newInstance ();

Sukurti „SAXParser“ naudojant naujasSAXParser metodas:

SAXParser saxParser = factory.newSAXParser ();

Gaukite „XMLReader“ nuo „SAXParser“ naudojant „getXMLReader“ metodas:

XMLReader xmlReader = saxParser.getXMLReader ();

Tvarkyti SAX2 įvykius

Toliau turime sukurti DefaultHandler tvarkyti SAX2 įvykius. SAX2 įvykiai yra XML analizuojantys įvykiai, tokie kaip dokumento / elemento pradžia ir pabaiga bei simbolių duomenys. Už DefaultHandler, pirmiausia sukurkite privačią klasę RSSHandler kad pratęsia DefaultHandler klasė. Apibrėžkite įvykių apdorojimo metodų įgyvendinimą startElement ir personažai. Kiekvienas sklaidos kanalo elementas yra elementas. Viduje konors startElement metodas, jei localName yra "elementas" pridėti localName į rssRezultato eilutė:

rssResult = rssResult + localName + ":";

Viduje konors personažai metodą, pridėkite simbolių duomenis prie rssRezultato eilutė. Naudoti pakeisti viską būdas pašalinti visas papildomas vietas RSS sklaidos kanale:

String cdata = nauja eilutė (ch, pradžia, ilgis); if (item == true) rssResult = rssResult + (cdata.trim ()). pakeistiAll ("\ s +", "") + "\ t";

Viduje konors onCreate metodą, sukurkite RSSHandler objektas:

RSSHandler rssHandler = naujas RSSHandler ();

Nustatyti RSSHandler kaip turinio tvarkytojas „XMLReader“ objektas naudojant setContentHandler metodas:

xmlReader.setContentHandler (rssHandler);

Sukurkite „InputSource“ objektas iš RSS informacijos santraukos URL. Atidarykite URL srautą naudodami „openStream“ metodas:

InputSource inputSource = naujas InputSource (rssUrl.openStream ());

Analizuoti „InputSource“ naudojant analizuoti metodas „XMLReader“ objektas:

xmlReader.parse (inputSource);

Nustatyti rssRezultato eilutė sugeneruotas iš RSS srauto „TextView“ elementas:

rss.setText (rssResult);

Ir tuo mes baigėme. Pilnas Veikla klasė RSSFeed rodomas 3 sąraše.

Sąrašas 3. RSSFeed

paketas android.rss; importuoti android.app.Activity; importuoti android.os.Bundle; importuoti java.util.Stack; importuoti android.widget.TextView; importuoti javax.xml.parsers.SAXParser; importuoti javax.xml.parsers.SAXParserFactory; importuoti java.util.StringTokenizer; importuoti java.net.MalformedURLException; importuoti java.net.URL; importuoti org.xml.sax.InputSource; importuoti org.xml.sax.XMLReader; importuoti java.io.IOException; importuoti org.xml.sax.SAXException; importuoti javax.xml.parsers.ParserConfigurationException; importuoti org.xml.sax.Attributes; importuoti org.xml.sax.SAXException; importuoti org.xml.sax.helpers.DefaultHandler; viešoji klasė „RSSFeed“ pratęsia veiklą {/ ** iškviečiama, kai veikla sukuriama pirmą kartą. * / Stygos rssResult = ""; loginis elementas = klaidingas; @Paisyti viešą negaliojimą onCreate (paketas išsaugotasInstanceState) {super.onCreate (išsaugotasInstanceState); setContentView (R.layout.main); TextView rss = (TextView) findViewById (R.id.rss); pabandykite {URL rssUrl = naujas URL ("// www.javaworld.com/index.xml"); „SAXParserFactory“ gamykla = SAXParserFactory.newInstance (); SAXParser saxParser = factory.newSAXParser (); XMLReader xmlReader = saxParser.getXMLReader (); RSSHandler rssHandler = naujas RSSHandler (); xmlReader.setContentHandler (rssHandler); InputSource inputSource = naujas InputSource (rssUrl.openStream ()); xmlReader.parse (inputSource); } sugauti (IOException e) {rss.setText (e.getMessage ()); } gaudyti (SAXException e) {rss.setText (e.getMessage ()); } gaudyti (ParserConfigurationException e) {rss.setText (e.getMessage ()); } rss.setText (rssResult); } / ** public String removeSpaces (String s) {StringTokenizer st = new StringTokenizer (s, "", false); Stygos; while (st.hasMoreElements ()) t + = st.nextElement (); grįžti t; } * / privati ​​klasė „RSSHandler“ pratęsia „DefaultHandler“ {public void startElement (String uri, String localName, String qName, Attributes attrs) meta 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) išmeta SAXException {} public void simbolius (char [] ch, int start, int length) meta SAXException {String cdata = new String (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). pakeistiAll ("\ s +", "") + "\ t"; }}}

„Android“ programos paleidimas

Dabar pažiūrėkime, kas atsitiks paleidus „Android“ programą. Pirmiausia dešiniuoju pelės mygtuku spustelėkite „RSSFeed“ programą „Eclipse IDE“ ir pasirinkite Paleiskite kaip -> „Android“ programą.

Jūsų rezultatai šiek tiek skirsis atsižvelgiant į konfigūraciją: jei sukonfigūravote „Android“ platformą 11 ir API 3.0, tada bus paleista platformos 11 AVD. Jei pasirinkote „Android“ platformą 10 ir API 2.3, tada bus paleista 10 platformos AVD. Bet kuriuo atveju „RSSFeed“ programa turėtų būti rodoma kaip įdiegta teisingame „Android“ įrenginyje.

Dabar spustelėkite „RSSFeed“ programą, kad būtų rodomas RSS srautas, kuris turėtų pasirodyti taip, kaip parodyta 1 paveiksle.

Apibendrinant

Šiame „Java“ patarime sužinojote, kaip nustatyti RSS srautą „Android“ naudojant „SAXParser“, kuris pateikiamas kartu su „Android SDK“. Šią programą galite modifikuoti bet kuriame RSS kanale pakeisdami RSS URL. Mes taip pat atlikome paprastą pratimą formatuodami RSS kanalą, pašalindami papildomus tarpus tarp išvardytų straipsnių.

„Deepak Vohra“ yra „Sun“ sertifikuotas „Java“ programuotojas, „Sun“ sertifikuotas interneto komponentų kūrėjas ir anksčiau yra paskelbęs straipsnių „XML Journal“, „Java Developer Journal“, „WebLogic Journal“ ir „Java.net“.

Sužinokite daugiau apie šią temą

Sužinokite daugiau apie „Android“.

  • Atsisiųskite „Android“ SDK.
  • Atsisiųskite „Android“ kūrimo įrankius (ADT).
  • Atsisiųskite JDK
  • Atsisiųskite naujausią „Eclipse for Java EE“ versiją.

Daugiau iš „JavaWorld“

  • Peržiūrėkite „JavaWorld“ mobiliųjų „Java“ tyrimų zoną, kad rastumėte daugiau panašių straipsnių.
  • Žr. „JavaWorld“ svetainės žemėlapį, kuriame rasite išsamų tyrimų centrų, orientuotų į kliento, įmonės ir pagrindinius „Java“ kūrimo įrankius ir temas, sąrašą.
  • „JavaWorld“ „Java Technology Insider“ yra tinklalaidžių serija, leidžianti mokytis iš „Java“ technologijos ekspertų keliaujant į darbą.

Šią istoriją „Java Patarimas: Nustatykite RSS kanalą savo„ Android “programai“ iš pradžių paskelbė „JavaWorld“.

$config[zx-auto] not found$config[zx-overlay] not found