Получить строку в <image>Теги с getValue элемента RSS - Android - PullRequest
0 голосов
/ 16 марта 2020

Как я могу получить строку в <image> тегах с getValue? <image>https://i2.cnnturk.com/i/cnnturk/75/720x490/5e6f7a9a70380e0cc8f49313</image>

мне нужно https://i2.cnnturk.com/i/cnnturk/75/720x490/5e6f7a9a70380e0cc8f49313 в качестве значения.

Я могу показать изображение, если оно <media:content url=""/> <media:thumbnail url=""/> <enclosure url=""/> и тоже нужно показывать <image>.

Также есть ли способ отформатировать RSS-публикацию sh от GMT до GMT + 3? Мне нужно показать другой часовой пояс.

RSS Элемент:

<item>
<guid isPermaLink="true">5e6f79fe70380e0cc8f49311</guid>
<link>https://www.cnnturk.com/turkiye/istanbul-barosundan-koronaviruse-karsi-avukatlara-acil-mesaj</link>
<title>
<![CDATA[ İstanbul Barosu&#39;ndan koronavirüs&#39;e karşı avukatlara &#39;acil&#39; mesaj ]]>
</title>
<description>
<![CDATA[ İstanbul Barosu Başkanlığı Koronavirüs nedeniyle &quot;Acil&quot; başlığıyla üye avukatlara mesaj attı. Mesajda duruşmaların 14 Nisan 2020 tarihinden sonra görüleceği, avukatlara bu süreçte dava açılmaması önerildi. ]]>
</description>
<pubDate>Mon, 16 Mar 2020 16:09:49 GMT</pubDate>
<atom:link href="https://www.cnnturk.com/turkiye/istanbul-barosundan-koronaviruse-karsi-avukatlara-acil-mesaj"/>
<image>https://i2.cnnturk.com/i/cnnturk/75/720x490/5e6f7a9a70380e0cc8f49313</image>
</item>

Вот android код:

Нужна помощь для

else if (qName.equalsIgnoreCase("image")) { //NEW ADDITION
            currentState = State.media;
                String attrValue = attributes.getValue("WHAT");
                item.setThumburl(attrValue);

ПОЛНЫЙ КОД

@Override
    public void startElement(final String uri, final String localName, 
            final String qName, final Attributes attributes)
            throws SAXException {
        currentState = State.unknown;
        tagContent = new StringBuilder();
        if (localName.equalsIgnoreCase("item") || localName.equalsIgnoreCase("entry")) {
            itemFound = true;
            item = new RSSItem();
            currentState = State.unknown;
        } else if (qName.equalsIgnoreCase("title")) {
            currentState = State.title;
        } else if (qName.equalsIgnoreCase("description") || qName.equalsIgnoreCase("content:encoded") || qName.equalsIgnoreCase("content")) {
            currentState = State.description;
        } else if (qName.equalsIgnoreCase("link") || qName.equalsIgnoreCase("origLink")) {
            currentState = State.link;
        } else if (qName.equalsIgnoreCase("pubdate") || qName.equalsIgnoreCase("published")) {
            currentState = State.pubdate;
        } else if (qName.equalsIgnoreCase("image")) { //NEW ADDITION
        currentState = State.media;
            String attrValue = attributes.getValue("WHAT");
            item.setThumburl(attrValue);
        } else if (qName.equalsIgnoreCase("media:thumbnail")) {
            currentState = State.media;    
            String attrValue = attributes.getValue("url");
            item.setThumburl(attrValue);
        } else if (qName.equalsIgnoreCase("media:content")){
            currentState = State.media;   
            String attrValue = attributes.getValue("url");
            if (attributes.getValue("type") == null || attributes == null){
                return;
            } else if (attributes.getValue("type").startsWith("image")){
                item.setThumburl(attrValue);
            } else if (attributes.getValue("type").startsWith("video")){ 
                item.setVideourl(attrValue);
            } else if (attributes.getValue("type").startsWith("audio")){ 
                item.setAudiourl(attrValue);
            } 
        } else if (qName.equalsIgnoreCase("enclosure")){
            currentState = State.media;   
            String attrValue = attributes.getValue("url");
            if (attributes == null || attributes.getValue("type") == null) {
                return;
            } else if (attributes.getValue("type").startsWith("image")){
                item.setThumburl(attrValue);
            } else if (attributes.getValue("type").startsWith("video")){ 
                item.setVideourl(attrValue);
            } else if (attributes.getValue("type").startsWith("audio")){ 
                item.setAudiourl(attrValue);
            } 
        }

    }

Ответы [ 2 ]

0 голосов
/ 16 марта 2020
String sete = "<image>https://x.com/a.jpg</image>";
String sete2 = sete.replace("<image>", "");
0 голосов
/ 16 марта 2020

Вы можете попробовать регулярное выражение \<(\Qimage\E)\>(.*?)\<\/\1\> Соответствовать соответствующим символам. Может соответствовать содержимому всех меток изображения.

public static void main(String[] args){
    String s="<image>https://x.com/image.jpg</image>"
            + "<image>https://x.com/image1.jpg</image>"
            + "<image>https://x.com/image2.jpg</image>";
    Pattern p = Pattern.compile("\\<(\\Qimage\\E)\\>(.*?)\\<\\/\\1\\>");
    Matcher m = p.matcher(s);
    while(m.find()){
     System.out.println(m.group(2));
    }
}

Обновление: я только что обновил код. Извините, что раньше написал неправильно.

, если вы не хотите использовать регулярное выражение

int record = 0;
while(record!=-1){
   int a = qName.indexOf("<image>",record);
   if(a==-1){
        break;
   }
   int b = qName.indexOf("</image>",a);
   String url=qName.substring(a+7,b+8);
   System.out.println(url);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...