2016-11-04 9 views
1
ここ

は、私はこのコードを実行すると、私はポストのようなデータを取得し、私のデータswift3 Alamofire XMLデータ

ここ
Data: <?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://192.168.80.41:8081/WebServiceTest.asmx">[ 
    { 
    "NonCID": "n10909", 
    "Name": "aaaa", 
    "ClassType": "aa", 
    "City": "aaa", 
    "Area": "aaa", 
    "Address": "aaaa", 
    "TelArea": "02", 
    "Tel": "29857456", 
    "Latitude": 25.062047000000000, 
    "Longitude": 121.495241000000000 
    }, 
    { 
    "NonCID": "n10957", 
    "Name": "xxxx", 
    "ClassType": "xx", 
    "City": "xxx", 
    "Area": "xxx", 
    "Address": "xxxxx", 
    "TelArea": "02", 
    "Tel": "29736693", 
    "Latitude": 25.061227100000000, 
    "Longitude": 121.495149900000000 
    }, 
    { 
    "NonCID": "n10958", 
    "Name": "xxxx", 
    "ClassType": "xx", 
    "City": "xxx", 
    "Area": "xxx", 
    "Address": "xxxx", 
    "TelArea": "02", 
    "Tel": "29821024", 
    "Latitude": 25.061812900000000, 
    "Longitude": 121.495274000000000 
    }]</string> 

は私のコード

Alamofire.request("http://localhost/WebServiceTest.asmx/") .responseData { response in 
      debugPrint("All Response Info: \(response)") 
       if let data = response.result.value, let utf8Text = String(data: data, encoding: .utf8) { 
       print("Data: \(utf8Text)") 

      } 
     } 

ですデータフォーム[{"noncid": "xxxx"、 "Name": "bbb"、........ etc}]を辞書に入れることはできません。

誰も私が使用できる辞書にデータを取得する方法を知っていますか? または別の方法でそれを行うことができます。すべての歓声に感謝

答えて

1

XML要素名に関連付けられたテキストを解析するのにNSXMLParserを使用してください。次に、JSONのように見えるテキストを取得したら、NSJSONSerializationを使用してJSON文字列の内容を解析します。

fileprivate var parsedXMLString: String? 
fileprivate var parsedElementValue: String? 

そして、あなたは、XMLパーサーの拡張機能を実装しています:あなたはいくつかのプロパティを持っている

func parse(data: Data) { 
    // parse the xml 

    let parser = XMLParser(data: data) 
    parser.delegate = self 
    guard parser.parse() else { 
     print("xml parse error: \(parser.parserError?.localizedDescription)") 
     return 
    } 

    // get the parsedXMLString from 

    guard let value = parsedXMLString, let jsonData = value.data(using: .utf8) else { 
     print("cannot convert to data") 
     print("string: \(parsedElementValue)") 
     return 
    } 

    // try now parsing the JSON body 

    do { 
     guard let responseObject = try JSONSerialization.jsonObject(with: jsonData) as? [[String: Any]] else { 
      print("Unable to parse array of dictionaries from JSON") 
      print(value) 
      return 
     } 

     // use responseObject here 

     print(responseObject) 
    } catch let jsonError { 
     print("Unable to parse json: \(jsonError)") 
    } 
} 

extension ViewController: XMLParserDelegate { 

    func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) { 
     if elementName == "string" { 
      parsedElementValue = "" 
     } 
    } 
    func parser(_ parser: XMLParser, foundCharacters string: String) { 
     parsedElementValue?.append(string) 
    } 

    func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { 
     if elementName == "string" { 
      parsedXMLString = parsedElementValue 
      parsedElementValue = nil 
     } 
    } 
} 

私は、これは非常にあること、しかし、言われなければなりませんXMLの中でJSONを見るために、奇妙なフォーマットです。通常、あなたはどちらか一方を持っています...

+0

それは仕事です!ありがとうたくさんの歓声 – Jeff

関連する問題