Как получить URL для изображения из массива объектов - PullRequest
0 голосов
/ 09 апреля 2019

Я получаю список URL-адресов из фида, как мне получить нужный URL-адрес из списка.

Я получаю список URL-адресов, которые я передаю объекту, среди которых URL-адрес изображенияСамо собой, миниатюра, информация о типе файла и т. д.

URL url = new URL("https://catalog.example.com/publicdomain/browse/en/recent.atom");
XmlReader xmlReader = null;

try {

  xmlReader = new XmlReader(url);
  SyndFeed feeder = new SyndFeedInput().build(xmlReader);

  for (Iterator iterator = feeder.getEntries().iterator(); iterator
      .hasNext();) {
    SyndEntry syndEntry = (SyndEntry) iterator.next();


    System.out.println(syndEntry.getAuthor());
    Object[] str = syndEntry.getLinks().toArray();

    System.out.println(str[3] );

  }
} finally {
      if (xmlReader != null)
        xmlReader.close();
}

Когда я использую 'str [3]', вывод будет следующим:

John Doe
SyndLinkImpl.hreflang=null
SyndLinkImpl.rel=http://opds-example.org/image/thumbnail
SyndLinkImpl.length=0
SyndLinkImpl.href=https://covers.example.net/book/6709.jpg
SyndLinkImpl.title=null
SyndLinkImpl.type=image/jpeg

Я не знаю; tхочу поставить жесткий код индекса массива, потому что канал может измениться.Как я могу изменить свой код, чтобы определить, какой индекс массива имеет URL-адрес для изображения типа и скопировать URL-адрес.Я хотел бы использовать тот же подход, чтобы проверить, какой индекс имеет URL для содержимого типа pdf.

Thamls

1 Ответ

0 голосов
/ 09 апреля 2019

Я бы сделал это следующим образом:

SyndFeed feeder = new SyndFeedInput().build(xmlReader);
for (SyndEntry syndEntry: feeder.getEntries()) {

    System.out.println(syndEntry.getAuthor());
    List<SyndLinkImpl> links = syndEntry.getLinks().stream().filter(link -> "image/jpeg".equals(link.getType))()).collect(Collectors.toList());

    System.out.println(links.toArray());
}
...