Как да вградите RSS емисия във вашето приложение за Android с помощта на XML парсер

  • javax.xml.parsers.SAXParser
  • andro >Ще се придържаме към първата опция.SAXParserчесто се използва при разработването на Android, защото е част от Android SDK. В този кратък урок ще създадем просто приложение за Android и ще използваме SAXParser за анализиране и показване на емисията.

Създайте Andro >Нека създадем просто приложение, което ще получава RSS канал. Ще използваме Eclipse IDE за програмиране.

вашето

    Изберете File->New->Project и изберете Andro > в диалоговия прозорец, който се отваря.Имайте предвид, че класът RSSFeed, който създадохме, който наследява Activity, всъщност е визуален потребителски интерфейс - прозорец. Сега нашият проект се състои от три файла:RSSFeed.javaсъдържа изходния код за класа RSSFeed, файл за маркиранеres/layout/main.xml, съдържащ информация за дизайна на потребителския интерфейс и компонентите на Android UI; манифестен файлAndroidManifest.xml, който съхранява основните параметри на проекта (име на пакета, активност, стартирана при стартиране на програмата (клас на дейност), компоненти на приложението, процеси, разрешения, минимално необходимо ниво на API).

помощта

Персонализиране на AndroidManifest.xml

Ще получаваме RSS емисия от отдалечен сървър, така че нашето приложение трябва да има съответните разрешения.Щракнете в дървото на проекта върху файлаAndroidManifest.xml, отидете в раздела Разрешения, щракнете върху бутона Добавяне, изберете Разрешение за използване, щракнете върху OK. В полето Име въведетеandroid.permission.INTERNET. В резултат на тези действия във файла AndroidManifest.xml ще се появи ред

След това нашето приложение може да работи със сокети и да получава информация от мрежата. Файлът AndroidManifest.xml трябва да изглежда така:

Разбор на RSS емисии в Android

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

Нека се върнем към файлаsrc\android.rss\RSSFeed.javaи добавим редовете в началото на файла:

Вътре в класа RSSFeed дефинираме низова променлива, където ще заредим RSS емисията преди заглавката на метода onCreate. .

Методът onCreate се изпълнява, когато нашата програма стартира. Сега този метод съдържа два реда, водещи до показването на нашия прозорец на екрана. Добавете rss променливата в края на този метод, който е свързан с втория елемент TextView. С тази променлива ще изведем информация на екрана.

Методът findViewBy, който зададохме на втория TextView, когато създадохме дизайна).

За да работи програмата, трябва да свържете още няколко библиотеки:

Файлът с RSS емисия е XML, съдържащ колекция от . Всеки на свой ред съдържа елементи за заглавие, описание, връзка, създател, дата, имената на които говорят сами за себе си.

Създайте XML парсер обект

Използвайки статичния метод newInstance, създайте обектSAXParserFactory

Нека създадем SAXParser обект с помощта на newSAXParser:

Вземете обекта XMLReaderот SAXParser с помощта на метода getXMLReader:

Създаването на тези обекти изисква поставянето им в блок try/catch и обработка на изключения SAXException, ParserConfigurationException. Също така трябва да включим още няколко библиотеки

Обработка на SAX2 събития

Работата със SAXParser се основава на обработка на събития. Когато анализира XML файл, SAX2 генерира събития, като например кога следващият елемент или блок от символни данни започва и завършва. За да обработвате събития, трябва да създадете специален клас наследник DefaultHandler. Нека го наречем RSSHandler. В рамките на този клас ще се извърши анализът на XML файла. Трябва да заменим методите startElement и characters, които отговарят за стартирането на нов елемент и четенето на блок от данни. Името на елемента се предава на startElement чрез параметъра localName. Ако срещнем елемент, трябва да добавим стойността localName към резултантния низ.

В метода characters ще добавим данни за знаци към низа rssResult. Методът replaceAll ще се използва за премахване на всички двойни интервали.

Кодът на класа е даден по-долу

Да, трябва да включите библиотеката org.xml.sax.Attributes;

Да се ​​върнем към метода onCreate. Нека създадем обект RSSHandler и го предадем на обекта XMLReader с помощта на метода setContentHandler. По този начин казваме на XMLReader, че ще използваме методите на RSSHandler, когато анализираме файл.

В момента сме установили връзка с отдалечена страница, използвайки URL обекта, за да прочетете потока от данни, трябва да създадете обект InputSource и да отворите потока от данни за четене с помощта на метода openStream ():

Предаваме създадения по този начин обект на XMLReader, за да анализира данните

След тази команда файлът с RSS канал се чете и анализира в процесакоето, вътре в методите на класа RSSHandler, низът rssResult се запълва с данни. Всичко, което ни остава, е да предадем текста от този ред в TextView на екрана.

Това е всичко. Прочетохме отдалечения файл, анализирахме го, по време на което генерирахме низа rssResult и след това показахме този низ на екрана с помощта на TextView.