2017-05-24 8 views
0

Je veux analyser un XML à partir d'une URL qui est le RSS de mon blog avec des bibliothèques SWXMLHASH ou AEXML. J'ai trouvé une solution pour cela mais quand j'ai essayé la solution mon application s'est écrasée. Il est le problème rencontré: fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)Comment puis-je combiner Alamofire avec AEXML ou SWXMLHASH

Et il y a mes codes qui sont en viewDidLoad:

` Alamofire.request("http://myblog.com/feed").responseJSON { response in 

     if let data = response.data { 

     let xml = SWXMLHash.parse(data) 
      let news = xml["rss"]["channel"]["item"][0]["title"].element?.text 
      print(news!) 
     } 
     } 
` 

Y at-il d'autre solution pour cela? Je ne veux pas utiliser NSXMLParser, je veux utiliser ce genre de bibliothèques ou s'il existe une bibliothèque à jour, je peux utiliser.

Nous vous remercions de votre aide!

+0

Je suppose qu'il se bloque à 'imprimer (nouvelles!)'. 'news' doit être nul, donc votre XML ne doit rien avoir à ce chemin. –

+0

[link] (http://imgur.com/a/O1GwC) Il y a la structure principale de mon XML. J'ai commencé à penser, puis-je faire une erreur .. Merci pour votre commentaire Tristan – Oliver

Répondre

0

Utilisez

Alamofire.request("http://myblog.com/feed").response

pas Alamofire.request("http://myblog.com/feed").responseJSON

J'utilisé AEXML .. essayer

Alamofire.request("http://myblog.com/feed").response { res in 

     guard let xml = res.data else { 
      return 
     } 

     var options = AEXMLOptions() 
     options.parserSettings.shouldProcessNamespaces = false 
     options.parserSettings.shouldReportNamespacePrefixes = false 
     options.parserSettings.shouldResolveExternalEntities = false 

     do { 
      let xmlDoc = try AEXMLDocument(xml: xml, options: options) 

      print(xmlDoc.root["channel"]["item"]["title"].value!) 

     } catch let error { 
      print(error) 
     } 
} 
+0

Malheureusement, la valeur de type AEXMLDocument n'a pas de membre NSXMLParserOptions() ... Et j'ai essayé de nombreuses chances comme AEXMLOptions.ParserSettings, AEXMLDocument(). etc. Cela n'a jamais fonctionné. Je pense que l'utilisation des options XMLParser a changé. Et je vous remercie vraiment pour votre aide! – Oliver

+0

Je suis désolé .. J'utilisais une ancienne version de AEXML. Je l'ai changé à la dernière version. – Daniel

+0

Et je pense que vous devez changer 'responseJSON' en' response'. Vous êtes en train d'analyser xml .. pas JSON. – Daniel