2016-08-10 13 views
0

これは私がAPIから返すことをXML応答です:保存したXMLデータ応答[迅速]

<item> 
     <sku>JC-0000000004780</sku> 
     <name>Moco Black Bean Drink</name> 
     <description></description> 
     <delivery_time>24 hours</delivery_time> 
     <img_1></img_1> 
     <img_2></img_2> 
     <img_3></img_3> 
     <thumb_1></thumb_1> 
     <thumb_2></thumb_2> 
     <thumb_3></thumb_3> 
     <vid_1></vid_1> 
     <qr_code>JC4780</qr_code> 
     <zone_records>1</zone_records> 
     <delivery_zones> 
       <zone>3</zone> 
       <zone_name>Within Klang Valley</zone_name> 
     </delivery_zones> 
     <price_records>1</price_records> 
     <price_option> 
      <option> 
       <id>9645</id> 
       <label>190ml</label> 
       <price>4.13</price> 
       <promo_price>0</promo_price> 
       <qty>50</qty> 
       <stock>0.00</stock> 
       <stock_unit></stock_unit> 
       <default>TRUE</default> 
       <p_weight>0</p_weight> 
      </option> 
     </price_option> 
     <related_products></related_products> 
     <freshness></freshness> 
     <bulk>0</bulk> 
     <halal>0</halal> 
    </item> 
    <item> 
     <sku>JC-0000000004779</sku> 
     <name>Hongcho Vinegar Drink Pomegranate </name> 
     <description></description> 
     <delivery_time>24 hours</delivery_time> 
     <img_1></img_1> 
     <img_2></img_2> 
     <img_3></img_3> 
     <thumb_1></thumb_1> 
     <thumb_2></thumb_2> 
     <thumb_3></thumb_3> 
     <vid_1></vid_1> 
     <qr_code>JC4779</qr_code> 
     <zone_records>1</zone_records> 
     <delivery_zones> 
       <zone>3</zone> 
       <zone_name>Within Klang Valley</zone_name> 
     </delivery_zones> 
     <price_records>2</price_records> 
     <price_option> 
      <option> 
       <id>9696</id> 
       <label>500ml</label> 
       <price>23.50</price> 
       <promo_price>21.37</promo_price> 
       <qty>50</qty> 
       <stock>0.00</stock> 
       <stock_unit></stock_unit> 
       <default>TRUE</default> 
       <p_weight>0</p_weight> 
      </option> 
      <option> 
       <id>9644</id> 
       <label>900ml</label> 
       <price>38.50</price> 
       <promo_price>0</promo_price> 
       <qty>50</qty> 
       <stock>0.00</stock> 
       <stock_unit></stock_unit> 
       <default>FALSE</default> 
       <p_weight>0</p_weight> 
      </option> 
     </price_option> 
     <related_products></related_products> 
     <freshness></freshness> 
     <bulk>0</bulk> 
     <halal>0</halal> 
    </item> 

トリッキーな問題は、いくつかの項目が1つのだけの価格レコードを返され、一部は2の価格を返しますprice_recordsの一部であり、レコードなど(私が提供する回答として)、どのようにそれを保存するのですか?私はSWXMLHashライブラリを使用しています

+0

SWXMLHashを使用してxmlを解析した後は、XMLを反復処理してそれに応じてデータを使用する必要があります。例えば、あなたの反復では、price_recordsキーがn個のprice_optionsを保持している場合、price_optionsにn回アクセスしてすべての価格オプションを取得します。 –

+0

あなたは私にどのように表示できますか? @RoyK – bobo

答えて

1
let xml = SWXMLHash.parse(data) 

for item in xml["item"] { // Iterate over items 
    if let priceRecordsValue = item["price_records"].element?.text { // Check if price_records value exist 
     let priceRecordsCount = Int(priceRecordsValue) ?? 1 // Keep amount of price records in form of Int, default is 1 
     for index in 0...(priceRecordsCount-1) { // Iterate over the amount of price records 
      if let optionElement = item["price_option"]["option"][index].element { // Check if option element[n] exists 
       // Do something with option element[n] here 
      } 
     } 
    } 
} 
+0

私がデバッグしたときに、 "optionElement = item [" price_option "] [" options "] [index] .element {//オプション要素[n]が存在するかどうかチェックするとループしません //オプションの要素[n]のあるものをここに } " – bobo

+0

は動作しません): – bobo

+1

@boboまず、今、私は少し変更を加えました。第2に、プロジェクトで作業するためのコードを与えることを期待するべきではありません。このコードを読んだり、試したり、変更したり、学んだり、あなたがより良い開発者になるようにしてください。 :) –

関連する問題