Προγραμματισμός

Συμβουλή Java: Ρυθμίστε μια τροφοδοσία RSS για την εφαρμογή σας Android

Χρησιμοποιήστε το SAXParser της Java για να ανακτήσετε και να αναλύσετε μια τροφοδοσία RSS για Android. Αυτή η συμβουλή Java προορίζεται για προγραμματιστές που είναι νέοι στο Android και περιλαμβάνει οδηγίες για τη ρύθμιση ενός περιβάλλοντος ανάπτυξης Android και έναν σύντομο οδηγό εφαρμογής.

Μια τροφοδοσία RSS είναι ένα αρχείο με μορφή XML που χρησιμοποιείται για τη δημοσίευση περιοδικά ενημερωμένων κοινοπρακτικών πληροφοριών. Μια τροφοδοσία RSS μπορεί να αναλυθεί (δηλαδή, να διαβαστεί και να μορφοποιηθεί) χρησιμοποιώντας ένα πρόγραμμα ανάλυσης XML. Αναλυτές συμβατοί με Java που χρησιμοποιούνται για την ανάλυση XML σε Android περιλαμβάνουν:

  • android.content.res.XmlResourceParser είναι ένας αναλυτής έλξης
  • Απλό API για XML (SAX) βρίσκεται στο org.xml.sax πακέτο
  • Το Android ROME Feed Reader είναι ο αναγνώστης RSS feed της Google για Android
  • Το Android Feed Reader είναι ένας άλλος αναγνώστης τροφοδοσίας RSS / Atom Google για Android
  • Το Android-rss είναι μια ελαφριά βιβλιοθήκη Android για τροφοδοσίες RSS 2.0

Αυτή η συμβουλή Java είναι μια βήμα προς βήμα εισαγωγή στη χρήση του javax.xml.parsers.SAXParser να αναλύσει μια τροφοδοσία RSS σε μορφή XML. Το SAXParser είναι μια τυπική επιλογή επειδή περιλαμβάνεται με τα API Android στο Android SDK. Θα ρυθμίσουμε το περιβάλλον ανάπτυξης, θα δημιουργήσουμε μια απλή εφαρμογή και ροή Android για σκοπούς επίδειξης και, στη συνέχεια, θα χρησιμοποιήσουμε το SAXParser για τη μορφοποίηση της ροής για Android. Ενώ υποτίθεται κάποια εξοικείωση με την ανάπτυξη εφαρμογών Java, αυτή η συμβουλή είναι κατάλληλη για προγραμματιστές που είναι νέοι στην ανάπτυξη Java για κινητά.

Ρύθμιση του περιβάλλοντος

Ακολουθήστε τα παρακάτω βήματα για να ρυθμίσετε το περιβάλλον ανάπτυξης για αυτό το έργο:

  1. Εγκαταστήστε το Eclipse IDE.
  2. Εγκαταστήστε το πρόσθετο Android Development Tools (ADT) για το Eclipse. Η προσθήκη ADT για το Eclipse παρέχει ένα σύνολο επεκτάσεων για την ανάπτυξη εφαρμογών Android στο Eclipse.
  3. Εγκαταστήστε την πλατφόρμα Android 2.3 SDK. Το Android SDK παρέχει εργαλεία για την ανάπτυξη εφαρμογών Android.
  4. Δημιουργήστε μια εικονική συσκευή Android και ορίστε το περιβάλλον προορισμού ως Android 2.3.3. Επίπεδο API 10.

Το έργο Android

Θα δημιουργήσουμε ένα παράδειγμα έργου Android για τη λήψη της ροής RSS.

  1. Στο Eclipse IDE επιλέξτε Αρχείο -> Νέο.
  2. Σε Νέα επιλογή Android -> Android Projectκαι μετά κάντε κλικ στο Επόμενο.
  3. Στο παράθυρο New Android Project, καθορίστε ένα όνομα έργου (RSSFeed).
  4. Επιλέξτε Android Platform 2.3 API 10 για το Build Build.
  5. Στις Ιδιότητες, καθορίστε ένα όνομα εφαρμογής (ξανά, RSSFeed) και ένα όνομα πακέτου (android.rss).
  6. Επιλέξτε το πλαίσιο ελέγχου: Δημιουργία δραστηριότητας και καθορίστε το Δραστηριότητα τάξη (RssFeed).
  7. Καθορίστε την ελάχιστη έκδοση SDK ως 10 και κάντε κλικ στο Επόμενο. ή, αν έχετε επιλέξει το Platform 3.0 API 11, καθορίστε την ελάχιστη έκδοση SDK ως 11.

Σημειώστε ότι ένα δραστηριότητα (Βήμα 6) αντιπροσωπεύει μια αλληλεπίδραση χρήστη. Η τάξη που επεκτείνει το Δραστηριότητα Η τάξη δημιουργεί ένα παράθυρο για μια διεπαφή χρήστη.

Το προκύπτον έργο Android θα αποτελείται από τα ακόλουθα αρχεία:

  1. Μια τάξη δραστηριότητας (RSSFeed), το οποίο επεκτείνεται Δραστηριότητα.
  2. ΕΝΑ res / layout / main.xml αρχείο, το οποίο καθορίζει τη διάταξη των στοιχείων της διεπαφής χρήστη Android.
  3. Ενα AndroidManifest.xml αρχείο, το οποίο περιέχει διαμόρφωση εφαρμογών, όπως το όνομα του πακέτου, την κύρια δραστηριότητα που θα ξεκινήσει κατά την εκκίνηση της εφαρμογής Android, τα στοιχεία της εφαρμογής, τις διαδικασίες, τα δικαιώματα και το ελάχιστο επίπεδο API.

Σε res / layout / main.xml, καθορίστε τη διάταξη των στοιχείων της διεπαφής χρήστη Android. Δημιουργώ ένα Γραμμική διάταξη και να θέσει android: προσανατολισμός όπως και "κατακόρυφοςΣτόχος μας είναι να εμφανίσουμε τη ροή RSS ως μήνυμα κειμένου, οπότε προσθέστε ένα Προβολή κειμένου στοιχείο για τον τίτλο της τροφοδοσίας RSS και προσδιορίστε android: κείμενο ως Google RSS Feed. Πρόσθεσε ένα Προβολή κειμένου στοιχείο, με αναγνωριστικό "rss"για να εμφανιστεί η τροφοδοσία RSS. Η λίστα 1 δείχνει το προκύπτον main.xml.

Λίστα 1. Καθορισμός της διάταξης των στοιχείων του περιβάλλοντος εργασίας χρήστη Android

Σε AndroidManifest.xml, καθορίστε το Δραστηριότητα να ξεκινήσει ως RSSFeed. Για να αποκτήσετε πρόσβαση στη ροή RSS από τον Ιστό σε μια συσκευή Android πρέπει να ενεργοποιήσετε το android.permission.INTERNET άδεια μέσα AndroidManifest.xml, που επιτρέπει στις εφαρμογές να ανοίγουν πρίζες δικτύου. Προσθέστε τα ακόλουθα χρησιμοποιεί-άδεια στοιχείο:

Καθορίστε την ελάχιστη έκδοση Android με το χρησιμοποιεί-sdk στοιχείο. ο RSSFeed δραστηριότητα, το φίλτρο πρόθεσης, και δράση καθορίζονται με το στοιχείο δραστηριότητας και τα υπο-στοιχεία, όπως φαίνεται στην καταχώριση 2.

Λίστα 2. AndroidManifest.xml

Αναλύστε τη ροή RSS για Android

Στη συνέχεια θα χρησιμοποιήσουμε το javax.xml.parsers.SAXParser να αναλύσουμε τη ροή RSS. Ξεκινήστε εισάγοντας τις ακόλουθες κατηγορίες:

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

Θυμηθείτε ότι το RSSFeed η τάξη επεκτείνεται Δραστηριότητα. Στο RSSFeed τάξη, ορίστε μια μεταβλητή για την έξοδο της τροφοδοσίας RSS:

Συμβολοσειρά rssResult = "";

ο onCreate (αποθηκευμένο πακέτοInstanceState) η μέθοδος καλείται κατά την έναρξη της δραστηριότητας. Στο onCreate μέθοδος, ορίστε το περιβάλλον εργασίας χρήστη χρησιμοποιώντας το setContentView μέθοδος και ο πόρος διάταξης:

setContentView (R.layout.main);

Στη συνέχεια, χρησιμοποιούμε το findViewById μέθοδος για τον καθορισμό του widget Android Προβολή κειμένου αντικείμενο στο main.xml:

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

Τώρα χρησιμοποιήστε τον κατασκευαστή για Διεύθυνση URL για να καθορίσετε τη διεύθυνση URL τροφοδοσίας RSS:

URL rssUrl = νέα διεύθυνση URL ("// www.javaworld.com/index.xml");

Σημειώστε ότι η τροφοδοσία RSS αποτελείται από στοιχεία για τα στοιχεία ροής. Καθε αποτελείται από τίτλος, περιγραφή, σύνδεσμος, δημιουργός, και ημερομηνία επιμέρους στοιχεία.

Δημιουργήστε το SAXParser

Δημιουργώ ένα Εργοστάσιο SAXParser αντικείμενο χρησιμοποιώντας τη στατική μέθοδο newInstance:

SAXParserFactory factory = SAXParserFactory.newInstance ();

Δημιουργώ ένα SAXParser χρησιμοποιώντας το newSAXParser μέθοδος:

SAXParser saxParser = factory.newSAXParser ();

Αποκτήστε ένα XMLReader από το SAXParser χρησιμοποιώντας το getXMLReader μέθοδος:

XMLReader xmlReader = saxParser.getXMLReader ();

Χειρισμός εκδηλώσεων SAX2

Στη συνέχεια, πρέπει να δημιουργήσουμε ένα Προεπιλεγμένος χειριστής για να χειριστείτε τις εκδηλώσεις SAX2. Τα συμβάντα SAX2 είναι συμβάντα ανάλυσης XML όπως η αρχή και το τέλος ενός εγγράφου / στοιχείου και δεδομένων χαρακτήρων. Για το Προεπιλεγμένος χειριστής, πρώτα δημιουργήστε μια ιδιωτική τάξη RSS Χειριστής που επεκτείνει το Προεπιλεγμένος χειριστής τάξη. Ορίστε την εφαρμογή για τις μεθόδους χειρισμού συμβάντων startElement και χαρακτήρες. Κάθε στοιχείο ροής περιέχεται σε ένα στοιχείο. Στο startElement μέθοδος, εάν το τοπικό όνομα είναι "αντικείμενο" προσθέστε το τοπικό όνομα στο Συμβολοσειρά rssResult:

rssResult = rssResult + localName + ":";

Στο χαρακτήρες μέθοδος, προσθέστε τα δεδομένα χαρακτήρων στο Συμβολοσειρά rssResult. Χρησιμοποιήστε το αντικαταστήστε Όλα μέθοδος για την κατάργηση όλων των επιπλέον κενών στη ροή RSS:

String cdata = new String (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). ReplAll ("\ s +", "") + "\ t";

Στο onCreate μέθοδος, δημιουργήστε ένα RSS Χειριστής αντικείμενο:

RSSHandler rssHandler = νέο RSSHandler ();

Ορίστε το RSS Χειριστής ως χειριστής περιεχομένου στο XMLReader αντικείμενο χρησιμοποιώντας το setContentHandler μέθοδος:

xmlReader.setContentHandler (rssHandler);

Δημιουργήστε ένα InputSource αντικείμενο από τη διεύθυνση URL για τη ροή RSS. Ανοίξτε τη ροή URL χρησιμοποιώντας το openStream μέθοδος:

InputSource inputSource = νέο InputSource (rssUrl.openStream ());

Αναλύστε το InputSource χρησιμοποιώντας το αναλύω πρόταση μέθοδος του XMLReader αντικείμενο:

xmlReader.parse (inputSource);

Ορίστε το Συμβολοσειρά rssResult δημιουργήθηκε από την τροφοδοσία RSS στο Προβολή κειμένου στοιχείο:

rss.setText (rssResult);

Και με αυτό, τελειώσαμε. Το πλήρες Δραστηριότητα τάξη RSSFeed εμφανίζεται στην καταχώριση 3.

Λίστα 3. RSSFeed

πακέτο android.rss; εισαγωγή android.app.Activity; εισαγωγή android.os.Bundle; εισαγωγή java.util.Stack; εισαγωγή android.widget.TextView; εισαγωγή javax.xml.parsers.SAXParser; εισαγωγή javax.xml.parsers.SAXParserFactory; εισαγωγή java.util.StringTokenizer; εισαγωγή java.net.MalformedURLException; εισαγωγή java.net.URL; εισαγωγή org.xml.sax.InputSource; εισαγωγή org.xml.sax.XMLReader; εισαγωγή java.io.IOException; εισαγωγή org.xml.sax.SAXException; εισαγωγή javax.xml.parsers.ParserConfigurationException; εισαγωγή org.xml.sax.Attributes; εισαγωγή org.xml.sax.SAXException; εισαγωγή org.xml.sax.helpers.DefaultHandler; δημόσια τάξη RSSFeed επεκτείνει τη δραστηριότητα {/ ** που καλείται κατά τη δημιουργία της δραστηριότητας για πρώτη φορά. * / Συμβολοσειρά rssResult = ""; boolean item = false; @Override public void onCreate (BundleavedInstanceState) {super.onCreate (αποθηκευμένοInstanceState); setContentView (R.layout.main); TextView rss = (TextView) findViewById (R.id.rss); δοκιμάστε το {URL rssUrl = νέο URL ("// www.javaworld.com/index.xml"); SAXParserFactory factory = SAXParserFactory.newInstance (); SAXParser saxParser = factory.newSAXParser (); XMLReader xmlReader = saxParser.getXMLReader (); RSSHandler rssHandler = νέο RSSHandler (); xmlReader.setContentHandler (rssHandler); InputSource inputSource = νέο 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); Σειρά; ενώ (st.hasMoreElements ()) t + = st.nextElement (); επιστροφή t; } * / ιδιωτική κλάση RSSHandler επεκτείνει το DefaultHandler {public void startElement (String uri, String localName, String qName, Attributes atrs) ρίχνει το 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) ρίχνει το SAXException {} δημόσιοι κενοί χαρακτήρες (char [] ch, int start, int length) ρίχνει το SAXException {String cdata = new String (ch, start, length); if (item == true) rssResult = rssResult + (cdata.trim ()). ReplAll ("\ s +", "") + "\ t"; }}}

Εκτέλεση της εφαρμογής Android

Τώρα ας δούμε τι συμβαίνει όταν εκτελούμε την εφαρμογή Android. Πρώτα, κάντε δεξί κλικ στην εφαρμογή RSSFeed στο Eclipse IDE και επιλέξτε Εκτέλεση ως -> Εφαρμογή Android.

Τα αποτελέσματά σας θα διαφέρουν ελαφρώς ανάλογα με τη διαμόρφωση: Εάν έχετε διαμορφώσει το Android Platform 11 και το API 3.0, τότε θα ξεκινήσει η πλατφόρμα 11 AVD. Εάν έχετε επιλέξει την πλατφόρμα Android 10 και το API 2.3, θα ξεκινήσει η πλατφόρμα 10 AVD. Είτε έτσι είτε αλλιώς, η εφαρμογή RSSFeed θα πρέπει να εμφανίζεται ως αναπτυγμένη στη σωστή συσκευή Android.

Τώρα κάντε κλικ στην εφαρμογή RSSFeed για να εμφανιστεί η τροφοδοσία RSS, η οποία θα πρέπει να εμφανίζεται όπως φαίνεται στο Σχήμα 1.

Συμπερασματικά

Σε αυτήν την συμβουλή Java μάθατε πώς να ρυθμίζετε μια ροή RSS σε Android χρησιμοποιώντας SAXParser, το οποίο συνοδεύεται από το Android SDK. Μπορείτε να τροποποιήσετε αυτήν την εφαρμογή για οποιαδήποτε τροφοδοσία RSS αλλάζοντας τη διεύθυνση URL RSS. Κάναμε επίσης μια απλή άσκηση στη διαμόρφωση της τροφοδοσίας RSS αφαιρώντας επιπλέον κενά μεταξύ των αναφερόμενων άρθρων.

Ο Deepak Vohra είναι προγραμματιστής Java Certified Sun, Sun Certified Web Component Developer και έχει δημοσιεύσει προηγουμένως άρθρα σε XML Journal, Java Developer's Journal, WebLogic Journal και Java.net.

Μάθετε περισσότερα σχετικά με αυτό το θέμα

Μάθετε περισσότερα για το Android.

  • Κατεβάστε το Android SDK.
  • Κατεβάστε τα Εργαλεία ανάπτυξης Android (ADT).
  • Κατεβάστε το JDK
  • Κατεβάστε την τελευταία έκδοση του Eclipse για Java EE.

Περισσότερα από το JavaWorld

  • Ρίξτε μια ματιά στη ζώνη έρευνας Java Java για κινητά Java για περισσότερα άρθρα όπως αυτό.
  • Ανατρέξτε στον Ιστότοπο JavaWorld για μια πλήρη λίστα ερευνητικών κέντρων που εστιάζουν σε εργαλεία και θέματα ανάπτυξης από την πλευρά του πελάτη, τις επιχειρήσεις και τα βασικά Java.
  • Το Java Technology Insider του JavaWorld είναι μια σειρά podcast που σας επιτρέπει να μάθετε από ειδικούς της τεχνολογίας Java στο δρόμο σας για εργασία.

Αυτή η ιστορία, "Συμβουλή Java: Ρύθμιση ροής RSS για την εφαρμογή σας Android" δημοσιεύτηκε αρχικά από το JavaWorld.