Парсим XHTML с помощью JSoup в Android

No comments on Парсим XHTML с помощью JSoup в Android

Written by

in

Расскажу о том, как можно распарсить XHTML или даже HTML с помощью JSoup в Android. Лично я парсил XHTML. Для этого нужно:

  1. Скачать jar файл JSoup библиотеки здесь.
  2. Подключить JSoup.jar к нашему проекту. Для этого нажимаем правой кнопкой на проект, далее выбираем Build Path->Configure Build Path.

    В появившемся окне нажимаем Java Build Paths, далее выбираем вкладку Libraries и добавляем через Add Jars.
  3. Создать объект класса Document, который, кстати, должен быть именно из Jsoup библиотеки, а не родных библиотек. Это можно выбрать при нажатии Shift+Cmd+O после того, как вы добавили код, использующий JSoup. Объект класса Document в данном случае создается из того, что подкачивается через URL. Далее с этим объектом можно работать. Например, в данном случае из него извлекаются все ссылки с тэгом а, и создается массив из ссылок и их атрибутов href. Сначала все добавляем в структуру ArrayList, затем ArrayList заносим в String[] массив. Все, что добавлено, пишется в LogCat через Log.v. В данном случае, метод doInBackground должен быть в составе класса AsyncTask, просто не хочу приводить весь код, это будет лишним.
    private 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. Возможностей у него много и здесь можно найти более подробное их описание.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *