2016-11-13 20 views
0

これはxml:SwiftyXMLParserを解析するのにこのライブラリを使用していますが、残念ながらIOSの応答から結果の配列を取得できませんでしたが、ブラウザで見ることができますsee this linkまたはsample of respond確かにAPIのURLからXMLを解析できません

これは私の操作です:

URLSession.shared.dataTask(with: NSURL(string: urlString)! as URL, completionHandler: { (data, response, error) -> Void in 

    if error != nil { 
     print(error) 
     return 
    } 
    if let data = data { 
     let xml = XML.parse(data) 
     print(xml) 
     //tried xml["results"]["0"] also didn't work 
    } 

}).resume() 

これは、IOSの私の出力です:

<response version="2"> 
<query>ios</query> 
<location>austin, tx</location> 
<clickedCategories/> 
<paginationPayload/> 
<radius>25</radius> 
<dupefilter>true</dupefilter> 
<highlight>false</highlight> 
<start>1</start> 
<end>10</end> 
<pageNumber>0</pageNumber> 
<totalresults>315</totalresults> 
<results> 
//This is array but No results!! 
<\results> 

だから誰もがなぜ知っていますか?そしてどうやって?

ありがとうございます。

JSONと私の試み:

indeedAPIは=「api.indeed.com/ads/apisearch?publisher=4935138002921571 & Q =(検索語)&形式= JSON & L =%の2C +がTX &ソートせ= &半径= 50 & ST = & JT = &開始= &限界= 10 &フロマージュ= &フィルタ= & LatLongブログ= 1 & CO = & CHNL = & userip = 1.2.3.4 & V = 2"あなたがresultエントリを探しているなら

let googleYoutubeAPIUrl = URL(string: indeedAPI.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!) 

    let request:URLRequest = URLRequest(url: googleYoutubeAPIUrl!, cachePolicy: NSURLRequest.CachePolicy.reloadIgnoringCacheData, timeoutInterval: 5.0) 

    OperationQueue.main.cancelAllOperations() 
    let task = URLSession.shared.dataTask(with: request, completionHandler: { data, response, error in 

     if let _ = error { 
      print(error.debugDescription) 
      return 
     } 

     if let data = data { 
      completion(JSON(data: data)) 
     } else { print("data nil"); return } 

    }) 
    task.resume() 

{ 
    "paginationPayload" : "", 
    "location" : "%2C tx", 
    "dupefilter" : true, 
    "results" : [ 
// also no results 
    ], 
    "totalResults" : 0, 
    "version" : 2, 
    "end" : 0, 
    "pageNumber" : 0, 
    "start" : 0, 
    "query" : "ios developer", 
    "highlight" : true 
} 
+0

@Robありがとう、私は追加した私の出力 –

+0

@Rob申し訳ありませんもう一度、私が編集しました私の質問。ありがとうございます –

+0

'xml [" results "]'は動作しますか? – Larme

答えて

0

、あなたのような何かを行うことができます:

let xml = XML.parse(data) 

guard xml.error == nil else { 
    print("\(xml.error!)") 
    return 
} 

let results = xml["response", "results"] 

guard results.error == nil && results["result"].error == nil else { 
    print("no results") 
    return 
} 

for result in results["result"] { 
    if let jobtitle = result["jobtitle"].text { 
     print("\(jobtitle)") 
    } 
} 
+0

あなたの方法は正しいですが、回答に結果のエントリがある場合にのみうまくいきます!それは応答の結果がないので奇妙です!これは私の問題です、なぜ応答が応答に結果を含めることができないのですか?ありがとうございました。 –

+0

@HamadFouad - あなたが望む 'guard'文を追加してください。上記のように( 'result'要素をチェックする)、' totalResults'値に 'guard'文を追加することができます。 – Rob

関連する問題