Как я могу разобрать вложенный XML с помощью анализатора GDataXML? - PullRequest
0 голосов
/ 29 января 2012

Как я могу получить это <firstName> и <lastName>. Я много пробовал, но все испортил.

<list>
<OrderData HASH="1843180441">
 <id>26</id><customer>
  <CustomerData HASH="882063912"> 
   <id>1</id> 
   <sex>Male</sex>
   <firstName>admin</firstName>
   <lastName>admin</lastName>
   <companyName>Individual</companyName>
   <userName>admin</userName>
   <password>21232f297a57a5a743894a0e4a801fc3</password>    
   <lastLogin>2012-01-26T12:11:38</lastLogin>
   <status>A</status>
   <created>2011-09-28T07:01:47</created>
   <modified>2012-01-26T12:11:38</modified>
   <canChangePassword>Y</canChangePassword>
   <isDeleted>false</isDeleted>
   <abn/>
   <abnBranch/>
 <storeCredit>50000.0</storeCredit>
 <billingAddress>
 <list>
 <AddressData HASH="768553743">
  <id>2</id>
  <firstName>admin</firstName>
  <lastName>admin</lastName>
  <addressLine1>suite: 1307, 9 Yara Street</addressLine1> 
  <addressLine2>dgdgdf</addressLine2>
  <postCode>3000</postCode>
  <suburb>dfgdfg</suburb>
  <city>sadf</city>
  <phone>4456</phone>
  <mobile/>
  <fax/>
  <active>true</active>
  <type>C</type>
  <email>afzal.bitmascot@gmail.com</email>
  <log/>
 </AddressData>
 </deliveryAddress>
 <purchaseDate>2011-10-03T03:23:48</purchaseDate>

</OrderData>
<OrderData HASH="1569451006"></OrderData>
<OrderData HASH="1449383081"></OrderData>
<OrderData HASH="1438157618"></OrderData>
<OrderData HASH="269308788"></OrderData>
</list>

До сих пор я делал это.

 NSLog(@"Enering in the xml file");
 NSArray *getNumberOfOrder = [[xmlDocument rootElement] elementsForName:@"OrderData"];

 for(GDataXMLElement *e in getNumberOfOrder){
   for(int i =0;i<[[e elementsForName:@"customer"]count];i++){
        // All orderd customer name
        NSString  *orderByFirstString = [[[[e elementsForName:@"customer"] objectAtIndex:0] childAtIndex:2] stringValue];
        NSString  *orderByLastString = [[[[e elementsForName:@"customer"] objectAtIndex:0] childAtIndex:3]stringValue];
        orderByString = [NSString stringWithFormat:@"%@ %@",orderByFirstString,orderByLastString];
        NSLog(@"order By String: %@",orderByString);
        }
 }

Сердечно благодарю за любую помощь или предложение.

1 Ответ

2 голосов
/ 29 января 2012

Я бы попробовал что-то подобное.Я перебрал бы XML-документ и сохранил бы его в массиве.

Обратите внимание на NSLog (), который выведет на консоль и поможет вам увидеть, что происходит.

xmlDocument = [[GDataXMLDocument alloc]initWithData:xmlData options:0 error:nil];

NSArray *temp = [xmlDocument.rootElement elementsForName:@"OrderData"];

for(GDataXMLElement *e in temp) {
    [outputArray addObject:e];
    NSLog(@"%@", e);
}

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

for (int i = 0; i < [outputArray count]; i++) {
   NSString *firstName = [[[[[[[[outputArray objectAtIndex:i]elementsForName:@"customer"] objectAtIndex:0] elementsForName:@"CustomerData"] objectAtIndex:0] childAtIndex:2]stringValue];
}
...