Как читать XML с помощью NSXMLParser, когда у меня есть несколько раз одно и то же имя узла в другой категории? - PullRequest
0 голосов
/ 28 августа 2011

Как мне такой тип ответа XML, используя NSXMLParser, я запутался в двух «щелчках», он ударит, так что, как управлять потоком и сохранять данные с одним объектом, помогите мне,

</campaign_summary_response>

<summary> <clicks>6</clicks>
<conversions>1</conversions>      
<conversion_rate>0.1666666666666666666666666667</conversion_rate>     
<revenue>22.26555000000000</revenue> 
<revenue_converted>22.26555000000000</revenue_converted>     
<currency_symbol>$</currency_symbol>  
<currency_symbol_converted>$</currency_symbol_converted>
</summary>

<campaigns>
<campaign> <offer_id>100</offer_id>
<offer_name>$100 Wendy's Gift Card + Free Frosty</offer_name>     
<campaign_id>1781</campaign_id> <vertical_name>Free Stuff</vertical_name> 
<price_format>CPA</price_format>
<price>0.0000</price> 
<impressions>0</impressions>
<clicks>6</clicks>   
<conversions>1</conversions>
<conversion_rate>0.1666666666666666666</conversion_rate>  
<revenue>15.0000</revenue>
<revenue_converted>22.26555000000000</revenue_converted> 
<epc>2.50000000000000000000000</epc>
<currency_symbol>€</currency_symbol>   
<currency_symbol_converted>$</currency_symbol_converted>
</campaign> </campaigns>

</campaign_summary_response>

Как мне написать код, используя метод делегата

    - (void)parser:(NSXMLParser *)parser 
               didEndElement:(NSString *)elementName
               namespaceURI:(NSString *)namespaceURI 
               qualifiedName:(NSString *)qName {

Чтобы я мог сохранить все значения в одном объекте и показать на дисплее.

1 Ответ

1 голос
/ 28 августа 2011

В didStartElement метод.

if([elementName isEqualToString:@"summary"]) summary = YES;
if([elementName isEqualToString:@"campaign"]) campaign = YES;

В didEndElement метод.

if(summary) {

    if([elementName isEqualToString:@"revenue"]) // revenue in summary
    if([elementName isEqualToString:@"summary"]) summary = NO;
}

if(campaign) {

    if([elementName isEqualToString:@"revenue"]) // revenue in campaign
    if([elementName isEqualToString:@"campaign"]) campaign = NO;
}
...