2016-04-20 8 views
2

ich die URL des Bildes von diesem XML erhalten möchten:Wie Abrufen von Daten aus HTML-Tag in XML-Tag -

<description> 
<![CDATA[ 
<div><a href='http://www.ynet.co.il/articles/0,7340,L-4794118,00.html'><img src='http://images1.ynet.co.il/PicServer4/2016/04/20/6955445/small2.jpg' alt='null' title='null' border='0' width='100' height='56'></a></div>בפוליטיקה, בכלכלה, בביטחון, במשפט, בתרבות, באקדמיה. המתח העדתי עדיין איתנו בכל פינה. למה הגיעו כל כך מעט מזרחיים למוקדי הכוח בישראל? הנתונים המלאים, הניתוח והפרשנויות יתפרסמו ב-ynet בחג. צפו בהצצה 
]]> 
</description> 

Dies ist mein Code. Ich habe leere Array, was ist falsch mit meinem Code und was ist die Lösung für mein Problem.

class ImageParser: NSObject, NSXMLParserDelegate{ 

    var itemsStarted = false; 
    var descriptionStarted = false; 
    var divStarted = false; 
    var aStarted = false; 
    var inImage = false; 
    var images:[String] = []; 

    func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { 
     if(elementName == "item"){ 
      itemsStarted = true; 
     } 

     if(itemsStarted && elementName == "description"){ 
      descriptionStarted = true; 
     } 

     if(descriptionStarted && elementName == "div"){ 
      divStarted = true; 
     } 

     if(divStarted && elementName == "a"){ 
      inImage = true; 
     } 

     if(inImage && elementName == "img"){ 
      images.append(attributeDict["src"]!); 
     } 
    } 

    func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { 
     if(elementName == "img"){ 
      inImage = false; 
     } 
    } 
    } 
+0

Mögliches Duplikat von [Using NSXMLParser with CDATA] (http://stackoverflow.com/questions/1095782/using-nsxmlparser-with-cdata) – JAL

+0

Sie können mir zeigen, wie die gefundene CDATA-Funktion in swift verwendet wird? Ich möchte die URL des Bildes aus diesem Block extrahieren –

+1

@JAL: Nicht ein Duplikat, da der Beitrag, auf den Sie verwiesen, in Obj-C und nicht schnell ist ... Die Antwort ist eine Art von dort. –

Antwort

2

NSXMLParser ignoriert alles innerhalb CDATA, also, wenn Ihr CDATA gültige XML-Tags enthält, was Sie tun müssen, im Grunde ist eine andere Instanz Parser auf den Text innerhalb von CDATA laufen.

diese https://github.com/hunkier/XMLParser-Swift/blob/master/XMLParser.swift diese Methode, um Ihren Code helfen könnte

versuchen auch in schnellen 2 ergänzt:

func parser(parser: NSXMLParser!, foundCDATA CDATABlock: NSData!) { 
      var datastring = String(CDATABlock: NSData!, encoding: NSUTF8StringEncoding); 
} 

Verwenden NSString statt String in früheren Version von schnellen ... Syntax ist die gleiche