如何使用GDataXML解析器解析嵌套的xml?

时间:2012-01-29 10:45:43

标签: iphone ios xml xml-parsing gdataxml

如何获得此<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 个答案:

答案 0 :(得分:2)

我会尝试这样的事情。我会遍历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];
}