2016-03-10 2 views
0

Я пытаюсь разобрать вывод мыльного api.Как анализировать XML с выходом JSON в Swift ios?

<string xmlns="webservices.fmx.bz/"> 
{ "ui": [ { "t": "1234", "vid": "123", "cn": "Company Name" } ] } 
</string> 

я был parseing вручную

var responseString = response.result.value?.stringByReplacingOccurrencesOfString("\r\n", withString: "") 
      responseString = responseString?.stringByReplacingOccurrencesOfString("<string xmlns=\"webservices.fmx.bz/\">", withString: "") 
      responseString = responseString?.stringByReplacingOccurrencesOfString("<?xml version=\"1.0\" encoding=\"utf-8\"?>", withString: "") 
      responseString = responseString?.stringByReplacingOccurrencesOfString("</string>", withString: "") 
      responseString = responseString?.stringByReplacingOccurrencesOfString("\"", withString: "") 
      responseString = responseString?.stringByReplacingOccurrencesOfString("{ ui: [ {  ", withString: "") 
      responseString = responseString?.stringByReplacingOccurrencesOfString("} ]}", withString: "") 
      responseString = responseString?.stringByReplacingOccurrencesOfString(" ", withString: " ") 
      var myStringArr = responseString?.componentsSeparatedByString(",") 
      var companyNameStr = myStringArr![2].stringByReplacingOccurrencesOfString("cn:", withString: "") 
      companyNameStr = companyNameStr.stringByReplacingOccurrencesOfString("&amp;", withString: "&") 
      companyNameStr = companyNameStr.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) 
      NSUserDefaults.standardUserDefaults().setObject(companyNameStr, forKey: "companyName") 

Кто-нибудь знает решение или проще библиотеки, я могу использовать?

+0

ерес простой и прямой путь для nsxmlparser - [** Ссылка **] (http://dubinski.org/wpis/easy-xml-parsing-in-swift/) – Lee

+1

Это НЕ путь к сделайте это @ Rayen. Используйте встроенный синтаксический анализатор. –

+0

эй райен. что происходит – JT4U

ответ

0

понял, как это сделать ... бы, чтобы очистить строку данных затем преобразовать обратно в NSData

Alamofire.request(.POST, emconOWO, parameters: params) .responseString { response in 
     print("Success: \(response.result.isSuccess)") 
//   print(response.result.value) 

     var responseString = response.result.value?.stringByReplacingOccurrencesOfString("\r\n", withString: "") 
     responseString = responseString?.stringByReplacingOccurrencesOfString("<string xmlns=\"webservices.fmx.bz/\">", withString: "") 
     responseString = responseString?.stringByReplacingOccurrencesOfString("<?xml version=\"1.0\" encoding=\"utf-8\"?>", withString: "") 
     responseString = responseString?.stringByReplacingOccurrencesOfString("</string>", withString: "") 
    responseString = responseString?.stringByReplacingOccurrencesOfString("\\", withString: "") 

     print(responseString) 

    let data = responseString!.dataUsingEncoding(NSUTF8StringEncoding) 
     do { 
      if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary { 
       print(jsonResult) 
      } 
0

IOS обеспечивает встроенный JSON парсер, который анализирует строку JSON полностью и строит словарь, представляет структуру JSON.

Однако iOS не предоставляет аналогичный подход для XML. NSXMLParser, предоставляемый iOS, анализирует использование модели, управляемой событиями. т.е.: синтаксический анализатор уведомляет делегата о событиях, и наша работа заключается в создании структуры в зависимости от элементов.

Подход JSON относительно прост, так как мы можем просто запросить проанализированную структуру данных для объектов, которые нам нужны.

Однако я обнаружил, что есть библиотека, которая выполняет аналогичную деятельность для XML в Swift. Вы можете найти его here.

Пожалуйста, проверьте его, и вы сможете проанализировать XML и построить с ним обработанный объект.