英文:
Get String In <image> Tags With getValue of RSS Item - Android
问题
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);
}
}
注意:这只是给出了代码部分的翻译,不包括注释或其他文本。如果你需要完整的翻译,请在需要的地方添加适当的翻译代码。
英文:
How can i get the string in <image>
tags with getValue?<image>https://i2.cnnturk.com/i/cnnturk/75/720x490/5e6f7a9a70380e0cc8f49313</image>
i need https://i2.cnnturk.com/i/cnnturk/75/720x490/5e6f7a9a70380e0cc8f49313
as value.
I'm able to show image, if it's <media:content url=""/>
<media:thumbnail url=""/>
<enclosure url=""/>
and need to show <image>
too.
Also is there any way to format RSS publish date GMT to GMT+3? I need to show as different timezone.
RSS Item:
<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>
Here is android code:
Need help for
else if (qName.equalsIgnoreCase("image")) { //NEW ADDITION
currentState = State.media;
String attrValue = attributes.getValue("WHAT");
item.setThumburl(attrValue);
_FULL CODE
@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);
}
}
}
答案1
得分: 0
你可以尝试使用正则表达式 \<(\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);
}
英文:
You can try the regular expression \<(\Qimage\E)\>(.*?)\<\/\1\>
To match the corresponding characters.It can match contents of all image labels.
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));
}
}
Update: I just updated the code. I'm sorry I wrote it wrong before.
if you don't want to use the regular expression
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);
}
答案2
得分: 0
String sete = "<image>https://x.com/a.jpg</image>";
String sete2 = sete.replace("<image>", "");
英文:
String sete = "<image>https://x.com/a.jpg</image>";
String sete2 = sete.replace("<image>", "");
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论