Расскажу о том, как можно распарсить XHTML или даже HTML с помощью JSoup в Android. Лично я парсил XHTML. Для этого нужно:
- Скачать jar файл JSoup библиотеки здесь.
- Подключить JSoup.jar к нашему проекту. Для этого нажимаем правой кнопкой на проект, далее выбираем Build Path->Configure Build Path.
В появившемся окне нажимаем Java Build Paths, далее выбираем вкладку Libraries и добавляем через Add Jars.
- Создать объект класса Document, который, кстати, должен быть именно из Jsoup библиотеки, а не родных библиотек. Это можно выбрать при нажатии Shift+Cmd+O после того, как вы добавили код, использующий JSoup. Объект класса Document в данном случае создается из того, что подкачивается через URL. Далее с этим объектом можно работать. Например, в данном случае из него извлекаются все ссылки с тэгом а, и создается массив из ссылок и их атрибутов href. Сначала все добавляем в структуру ArrayList, затем ArrayList заносим в String[] массив. Все, что добавлено, пишется в LogCat через Log.v. В данном случае, метод doInBackground должен быть в составе класса AsyncTask, просто не хочу приводить весь код, это будет лишним.
12345678910111213141516171819202122232425262728293031323334353637383940private static final String TAG = "DiseaseActivity";private ArrayList<String> diseasesList = new ArrayList<String>();private ArrayList<String> linksList = new ArrayList<String>();private String[] diseasesArray = new String[]{"Загрузка болезней"};private String[] linksArray = new String[]{"Ссылка"};public static String[] ConvertToStringArray(ArrayList list){return (String[])list.toArray(new String[0]);}protected Void doInBackground(String... urls) {try{String urlString = urls[0];Document doc = Jsoup.connect(urlString).get();Elements links = doc.select("a");diseasesList.clear();linksList.clear();for (Element link : links) {diseasesList.add(link.text());linksList.add(link.attr("href"));Log.v(TAG, e.text());}diseasesArray = ConvertToStringArray(diseasesList);linksArray = ConvertToStringArray(linksList);}catch (ClientProtocolException e){Error = e.getMessage();cancel(true);}catch (IOException e){Error = e.getMessage();cancel(true);}return null;}
Это лишь один из примеров использования JSoup. Возможностей у него много и здесь можно найти более подробное их описание.