如何从描述标签获取图像链接

时间:2012-09-28 23:24:10

标签: android

我想从我的RSS Feed的描述标签中获取图片链接。

description标签采用以下格式:

<description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QVSgisNFiHp7mXgpD309loKdAQo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QVSgisNFiHp7mXgpD309loKdAQo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QVSgisNFiHp7mXgpD309loKdAQo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QVSgisNFiHp7mXgpD309loKdAQo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://4.bp.blogspot.com/-pogGG3n-PfM/TqoiXzjoTpI/AAAAAAAARKg/0OagMGCaddE/s1600/AA.jpg" style="font-family: Georgia, serif; font-size: 100%; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&lt;span style="color: cyan;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5668380873371176594" src="http://4.bp.blogspot.com/-pogGG3n-PfM/TqoiXzjoTpI/AAAAAAAARKg/0OagMGCaddE/s320/AA.jpg" style="float: left; height: 320px; margin: 0px 10px 10px 0px; width: 320px;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;09:15OTE Sport 2  Τένις ATP 250 Malaysia 1st semifinal&lt;br /&gt;&lt;br /&gt;11:05OTE Sport 3  Moto GP ARAGON FP3&lt;br /&gt;&lt;br /&gt;11:15OTE Sport 2  Τένις ATP 250 Malaysia 2nd semifinal&lt;br /&gt;&lt;br /&gt;13:00NOVASPORTS 4  Ιστιοπλοΐα ALPARI 2012: World Match Racing Tour, Γαλλία&lt;br /&gt;&lt;br /&gt;14:00OTE Sport 2  Γερμανία δεύτερη κατηγορία Μόναχο 1860-Σαντχάουζεν&lt;br /&gt;&lt;br /&gt;14:45NOVASPORTS 1  Αγγλικό Πρωτάθλημα ΑΡΣΕΝΑΛ - ΤΣΕΛΣΙ&lt;br /&gt;&lt;br /&gt;14:50OTE Sport 3  Moto GP ARAGON QUAL&lt;br /&gt;&lt;br /&gt;15:00EUROSPORT  Ποδόσφαιρο: Παγκόσμιο Γυναικών U-17 Φάση ομίλων: Γκάμπια - Γαλλία&lt;br /&gt;&lt;br /&gt;16:00NOVASPORTS 3  Φιλικός αγώνας μπάσκετ ΟΛΥΜΠΙΑΚΟΣ - ΛΟΚΟΜΟΤΙΒ ΚΟΥΜΠΑΝ&lt;br /&gt;&lt;br /&gt;16:30OTE Sport 1  Γερμανικό Πρωτάθλημα Βέρντερ-Μπάγερν&lt;br /&gt;&lt;br /&gt;17:00OTE Sport 3  Football League Παναιτωλικός-Καλλονή&lt;br /&gt;&lt;br /&gt;17:00OTE Sport 2  Ισπανικό Πρωτάθλημα Βαλένθια-Σαραγόσα&lt;br /&gt;&lt;br /&gt;17:00EUROSPORT  Ποδηλασία Γύρος της Λομβαρδίας&lt;br /&gt;&lt;br /&gt;17:15NOVASPORTS 1  Σούπερ Λίγκα ΠΑΝΙΩΝΙΟΣ - ΑΕΚ&lt;br /&gt;&lt;br /&gt;17:15NOVASPORTS 2  Σούπερ Λίγκα ΚΕΡΚΥΡΑ - ΟΦΗ&lt;br /&gt;&lt;br /&gt;18:15EUROSPORT  Ποδόσφαιρο: Παγκόσμιο Γυναικών U-17 Φάση ομίλων: Καναδάς- Αζερμπαϊτζάν&lt;br /&gt;&lt;br /&gt;19:00OTE Sport 1  Ισπανικό Πρωτάθλημα Μάλαγα-Μπέτις&lt;br /&gt;&lt;br /&gt;19:00OTE Sport 2  Ιταλικό Πρωτάθλημα Πάρμα-Μίλαν&lt;br /&gt;&lt;br /&gt;19:00NOVASPORTS 3  Φιλικός αγώνας μπάσκετ ΤΣΣΚΑ ΜΟΣΧΑΣ - ΖΑΛΓΚΙΡΙΣ ΚΑΟΥΝΑΣ&lt;br /&gt;&lt;br /&gt;19:00Sport TV  Βελγικό πρωτάθλημα ΖΟΥΛΤΕ ΒΑΡΕΓΚΕΜ-ΑΝΤΕΡΛΕΧΤ&lt;br /&gt;&lt;br /&gt;19:30OTE Sport 3  Γερμανικό Πρωτάθλημα Ντόρτμουντ-Γκλάντμπαχ&lt;br /&gt;&lt;br /&gt;19:30NOVASPORTS 2  Σούπερ Λίγκα ΑΤΡΟΜΗΤΟΣ - ΟΛΥΜΠΙΑΚΟΣ&lt;br /&gt;&lt;br /&gt;19:30NOVASPORTS 1  Αγγλικό Πρωτάθλημα ΜΑΝΤΣΕΣΤΕΡ Γ. - ΤΟΤΕΝΑΜ&lt;br /&gt;&lt;br /&gt;21:00OTE Sport 1  Ισπανικό Πρωτάθλημα Σοσιεδάδ-Αθλέτικ Μπιλμπάο&lt;br /&gt;&lt;br /&gt;21:45OTE Sport 2  Ιταλικό Πρωτάθλημα Γιουβέντους-Ρόμα&lt;br /&gt;&lt;br /&gt;22:30NOVASPORTS 2  Πορτογαλικό Πρωτάθλημα ΡΙΟ ΑΒΕ - ΠΟΡΤΟ&lt;br /&gt;&lt;br /&gt;23:00OTE Sport 1  Ισπανικό Πρωτάθλημα Σεβίλη-Μπαρτσελόνα &lt;/div&gt;&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="https://active.macromedia.com/flash/cabs/swflash.cab#version=3,0,0,11" height="87" width="690"&gt;&lt;param name="Movie" value="http://network.clickbanner.gr/42/13418/13028/"&gt;&lt;param name="quality" value="high"&gt;&lt;param name="Loop" value="true"&gt;&lt;param name="play" value="true"&gt;&lt;param name="allowScriptAccess" value="sameDomain"&gt;&lt;param name="FlashVars" value="clickTAG=http://network.clickbanner.gr/z/13028/CD13418/"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;embed src="http://network.clickbanner.gr/42/13418/13028/" flashvars="clickTAG=http://network.clickbanner.gr/z/13028/CD13418/" quality="high" bgcolor="#FFFFFF" name="Banner" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="https://www.macromedia.com/go/getflashplayer" align="middle" height="87" width="679"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://network.clickbanner.gr/z/12699/CD13418/" target="_blank"&gt;&lt;img alt="" border="0" src="http://network.clickbanner.gr/42/13418/12699/" style="height: 82px; margin: 0 10px 10px 0; width: 674px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4261359698446466108-6623338655004558006?l=olympiacos-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/olympiacos-blogspot/xJVek/~4/I0JP9iZXKTc" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-pogGG3n-PfM/TqoiXzjoTpI/AAAAAAAARKg/0OagMGCaddE/s72-c/AA.jpg" height="72" width="72" />

我想得到

http://4.bp.blogspot.com/-pogGG3n-PfM/TqoiXzjoTpI/AAAAAAAARKg/0OagMGCaddE/s1600/AA.jpg

我尝试的方式是

 if (description.contains("div class=\"seperator\" ")){
                String imgg  = description.substring(description.indexOf("div class=\"seperator\""));
                String cleanUp = imgg.substring(0, imgg.indexOf(">")+1);//deixnei apo pou ksekina to keimeno
                imgg = imgg.substring(imgg.indexOf("a href=") + 5);
                int indexOf = imgg.indexOf("\"");
                if (indexOf==-1){
                    indexOf = imgg.indexOf("\"");
                }
                imgg = imgg.substring(0, indexOf);

                setImgLink(imgg);
            this.description = this.description.replace(cleanUp, "");
        }   else{   ....

但我总是得到其他声明。我怎么能解决它?

感谢您的时间

@juan我可以使用这样的东西吗?

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(description);

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//img";
Node imgNode = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);

String imgg = imgNode.getAttribute("src");

1 个答案:

答案 0 :(得分:0)

这可能不是您唯一的问题,但

"class=\"seperator\" "

有错字,应该是

"class=\"separator\" "

此外,除非您完全控制XML,否则使用Regexp解析XML是很脆弱的。即使这样,你最好还是使用XML解析器/ XPath

你拥有的XPath将检索文档中的第一个图像,你确定这是你想要的吗?你可能应该使用更像

的东西
//div[@class='separator']/img

要从返回的Node获取属性,请使用

 imgNode.getAttributes().getNamedItem("src").getNodeValue()