我想从我的RSS Feed的描述标签中获取图片链接。
description标签采用以下格式:
<description><p><a href="http://feedads.g.doubleclick.net/~a/QVSgisNFiHp7mXgpD309loKdAQo/0/da"><img src="http://feedads.g.doubleclick.net/~a/QVSgisNFiHp7mXgpD309loKdAQo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QVSgisNFiHp7mXgpD309loKdAQo/1/da"><img src="http://feedads.g.doubleclick.net/~a/QVSgisNFiHp7mXgpD309loKdAQo/1/di" border="0" ismap="true"></img></a></p><div dir="ltr" style="text-align: left;" trbidi="on"><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;"><span style="color: cyan;"><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;" /></span></a><br /><div style="text-align: justify;"><br /><br />09:15OTE Sport 2 Τένις ATP 250 Malaysia 1st semifinal<br /><br />11:05OTE Sport 3 Moto GP ARAGON FP3<br /><br />11:15OTE Sport 2 Τένις ATP 250 Malaysia 2nd semifinal<br /><br />13:00NOVASPORTS 4 Ιστιοπλοΐα ALPARI 2012: World Match Racing Tour, Γαλλία<br /><br />14:00OTE Sport 2 Γερμανία δεύτερη κατηγορία Μόναχο 1860-Σαντχάουζεν<br /><br />14:45NOVASPORTS 1 Αγγλικό Πρωτάθλημα ΑΡΣΕΝΑΛ - ΤΣΕΛΣΙ<br /><br />14:50OTE Sport 3 Moto GP ARAGON QUAL<br /><br />15:00EUROSPORT Ποδόσφαιρο: Παγκόσμιο Γυναικών U-17 Φάση ομίλων: Γκάμπια - Γαλλία<br /><br />16:00NOVASPORTS 3 Φιλικός αγώνας μπάσκετ ΟΛΥΜΠΙΑΚΟΣ - ΛΟΚΟΜΟΤΙΒ ΚΟΥΜΠΑΝ<br /><br />16:30OTE Sport 1 Γερμανικό Πρωτάθλημα Βέρντερ-Μπάγερν<br /><br />17:00OTE Sport 3 Football League Παναιτωλικός-Καλλονή<br /><br />17:00OTE Sport 2 Ισπανικό Πρωτάθλημα Βαλένθια-Σαραγόσα<br /><br />17:00EUROSPORT Ποδηλασία Γύρος της Λομβαρδίας<br /><br />17:15NOVASPORTS 1 Σούπερ Λίγκα ΠΑΝΙΩΝΙΟΣ - ΑΕΚ<br /><br />17:15NOVASPORTS 2 Σούπερ Λίγκα ΚΕΡΚΥΡΑ - ΟΦΗ<br /><br />18:15EUROSPORT Ποδόσφαιρο: Παγκόσμιο Γυναικών U-17 Φάση ομίλων: Καναδάς- Αζερμπαϊτζάν<br /><br />19:00OTE Sport 1 Ισπανικό Πρωτάθλημα Μάλαγα-Μπέτις<br /><br />19:00OTE Sport 2 Ιταλικό Πρωτάθλημα Πάρμα-Μίλαν<br /><br />19:00NOVASPORTS 3 Φιλικός αγώνας μπάσκετ ΤΣΣΚΑ ΜΟΣΧΑΣ - ΖΑΛΓΚΙΡΙΣ ΚΑΟΥΝΑΣ<br /><br />19:00Sport TV Βελγικό πρωτάθλημα ΖΟΥΛΤΕ ΒΑΡΕΓΚΕΜ-ΑΝΤΕΡΛΕΧΤ<br /><br />19:30OTE Sport 3 Γερμανικό Πρωτάθλημα Ντόρτμουντ-Γκλάντμπαχ<br /><br />19:30NOVASPORTS 2 Σούπερ Λίγκα ΑΤΡΟΜΗΤΟΣ - ΟΛΥΜΠΙΑΚΟΣ<br /><br />19:30NOVASPORTS 1 Αγγλικό Πρωτάθλημα ΜΑΝΤΣΕΣΤΕΡ Γ. - ΤΟΤΕΝΑΜ<br /><br />21:00OTE Sport 1 Ισπανικό Πρωτάθλημα Σοσιεδάδ-Αθλέτικ Μπιλμπάο<br /><br />21:45OTE Sport 2 Ιταλικό Πρωτάθλημα Γιουβέντους-Ρόμα<br /><br />22:30NOVASPORTS 2 Πορτογαλικό Πρωτάθλημα ΡΙΟ ΑΒΕ - ΠΟΡΤΟ<br /><br />23:00OTE Sport 1 Ισπανικό Πρωτάθλημα Σεβίλη-Μπαρτσελόνα </div><br /><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"><param name="Movie" value="http://network.clickbanner.gr/42/13418/13028/"><param name="quality" value="high"><param name="Loop" value="true"><param name="play" value="true"><param name="allowScriptAccess" value="sameDomain"><param name="FlashVars" value="clickTAG=http://network.clickbanner.gr/z/13028/CD13418/"><param name="bgcolor" value="#FFFFFF"><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"></embed></object><br /><br /><a href="http://network.clickbanner.gr/z/12699/CD13418/" target="_blank"><img alt="" border="0" src="http://network.clickbanner.gr/42/13418/12699/" style="height: 82px; margin: 0 10px 10px 0; width: 674px;" /></a></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4261359698446466108-6623338655004558006?l=olympiacos-blog.blogspot.com' alt='' /></div><img src="http://feeds.feedburner.com/~r/olympiacos-blogspot/xJVek/~4/I0JP9iZXKTc" height="1" width="1"/></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");
答案 0 :(得分:0)
这可能不是您唯一的问题,但
"class=\"seperator\" "
有错字,应该是
"class=\"separator\" "
此外,除非您完全控制XML,否则使用Regexp解析XML是很脆弱的。即使这样,你最好还是使用XML解析器/ XPath
你拥有的XPath将检索文档中的第一个图像,你确定这是你想要的吗?你可能应该使用更像
的东西//div[@class='separator']/img
要从返回的Node
获取属性,请使用
imgNode.getAttributes().getNamedItem("src").getNodeValue()