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:
- Įdiekite „Eclipse IDE“.
- Įdiekite „Eclipse“ skirtą „Android“ kūrimo įrankių (ADT) papildinį. ADT papildinys, skirtas „Eclipse“, suteikia plėtinių rinkinį, skirtą „Android“ programoms kurti „Eclipse“.
- Įdiekite „Android 2.3 SDK“ platformą. „Android SDK“ yra įrankiai, skirti kurti „Android“ programas.
- 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ą.
- „Eclipse IDE“ pasirinkite Failas -> Naujas.
- Skiltyje Nauja pasirinkti „Android“ -> „Android“ projektas, tada spustelėkite Pirmyn.
- Lange „Naujas„ Android “projektas“ nurodykite projekto pavadinimą (RSSFeed).
- „Build Target“ pasirinkite „Android Platform 2.3 API 10“.
- „Ypatybėse“ nurodykite programos pavadinimą (vėlgi, RSSFeed) ir paketo pavadinimą (android.rss).
- Pažymėkite žymimąjį laukelį: Sukurti veiklą ir nurodykite
Veikla
klasė (RssFeed
). - 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:
- Veiklos klasė (
RSSFeed
), kuris tęsiasiVeikla
. - A res / layout / main.xml failas, kuriame nurodomas „Android“ vartotojo sąsajos komponentų išdėstymas.
- 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-filtras
ir 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ėjas
ir 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“.