Jsoup .select возвращает пустое значение, но элемент содержит текст

1

Я пытаюсь получить текст элемента тега "link" в этом xml: http://www.istana.gov.sg/latestupdate/rss.xml

Я закодировал, чтобы получить первую статью.

        URL = getResources().getString(R.string.istana_home_page_rss_xml);
        // URL = "http://www.istana.gov.sg/latestupdate/rss.xml";

        try {
            doc = Jsoup.connect(URL).ignoreContentType(true).get();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // retrieve the link of the article
        links = doc.select("link");

        // retrieve the publish date of the article
        dates = doc.select("pubDate");

        //retrieve the title of the article
        titles = doc.select("title");

        String[] article1 = new String[3];
        article1[0] = links.get(1).text();
        article1[1] = titles.get(1).text();
        article1[2] = dates.get(0).text();

Статья получается красиво, но ссылка возвращает значение "(все значения элементов ссылки возвращаются). Названия и даты не имеют проблем. Тег ссылки состоит из текста URL. Кто-нибудь знает, почему он возвращает значение" "?

Теги:
jsoup

1 ответ

3
Лучший ответ

Похоже, что парсер HTML по умолчанию не может распознать <link> как действительный тег и автоматически закрывает его <link />, что означает, что содержимое этого тега пуст.

Чтобы решить эту проблему вместо парсера HTML, вы можете использовать синтаксический анализатор XML, который не имеет особого отношения к именам тегов.

doc = Jsoup.connect(URL)
      .ignoreContentType(true)
      .parser(Parser.xmlParser()) // <-- add this
      .get();
  • 0
    Работал как шарм. Спасибо большое Пшемо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню