Взять из xml - картинки наиболее лучшего качества

  • Автор темы Автор темы seodamage
  • Дата начала Дата начала

seodamage

Client
Регистрация
08.09.2014
Сообщения
268
Реакции
96
Баллы
28
Привет, есть такой xml(vk api)
В нем подряд идут блоки такого вида:

Код:
Развернуть Свернуть Копировать
<attachment>
     <type>photo</type>
     <photo>
      <pid>322086427</pid>
      <aid>-7</aid>
      <owner_id>-1111</owner_id>
      <user_id>100</user_id>
      <src>http://cs616021.vk.me/v616021855/6170/0XaVoDCSCNg.jpg</src>
      <src_big>http://cs616021.vk.me/v616021855/6171/MVG9GBgbs58.jpg</src_big>
      <src_small>http://cs616021.vk.me/v616021855/616f/1338zHzU5ZQ.jpg</src_small>
      <width>604</width>
      <height>401</height>
      <text></text>
      <created>1394904950</created>
      <access_key>1c8100a10aa4ea1caa</access_key>
     </photo>
    </attachment>

Всего за раз может быть до 9 таких блоков. Как взять из этих блоков картинки наиболее хорошего качества, при условии что картинки находятся в теге <src* и он бывает нескольких видов:

<src_xxbig>...</src_xxbig> Самое лучшее качество
<src_xbig>...</src_xbig> Качество похуже
<src_big>...</src_big> Хуже
<src>...</src> :(
 
(?<=<src_xxbig>).*?(?=</src_xxbig>)
 
Очевидно, что не будет работать так. Нужно чтобы бралось максимально возможное лучшее качество картинки, но может быть такое, что картинка залита в меньшем разрешении и <src_xxbig> просто нет, тогда нужен будет <src_xbig>, а если его нет то <src_big> и т.д. При этом может быть за раз несколько блоков в которых есть например <src_xxbig>

все это в коде вот так:

Код:
Развернуть Свернуть Копировать
<attachment>
xxx
<src_xxbig>...</src_xxbig>
<src_xbig>...</src_xbig>
<src_big>...</src_big>
xxx
</attachment>
...
<attachment>
zzz
<src_xxbig>...</src_xxbig>
<src_xbig>...</src_xbig>
<src_big>...</src_big>
zzz
</attachment>
...



То есть нужно между аттачментс посмотреть существует ли <src_xxbig> и чтобы оно было не пустым, если нету или пустое тогда тоже самое но уже с <src_xxbig> и так пока не найдется картинка. Но затрудняет все то, что может быть за 1 раз до 9 блоков с аттачментс. Соответственно, надо как то делить большой блок на маленькие.
 

Вложения

  • del.png
    del.png
    17,5 KB · Просмотры: 16
Последнее редактирование:
Парсите регуляркой от <photo> до </photo> и кладете каждый блок в список
Потом берете из списка каждую строчку и делаете с ней что хотите)
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)