与touchXML解析SOAP响应 - 问题

问题描述:

我的另一个问题OBJ-C: 我试图解析这个XML:与touchXML解析SOAP响应 - 问题

这里的情况:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
     <GetMyDashboardResponse xmlns="http://tempuri.org/"> 
      <GetMyDashboardResult> 
       <MyDashboard> 
        <Profile>Speed Seeker</Profile> 
        <UserID>6</UserID> 
        <VenueName>Prasowa</VenueName> 
        <FriendsCount>10</FriendsCount> 
        <FollowingCount>11</FollowingCount> 
        <FollowersCount>12</FollowersCount> 
        <StatusMessage>aaa</StatusMessage> 
        <StatusDate>2010-08-04T11:38:09.733</StatusDate> 
        <CheckedInTimeStamp>2010-07-30T13:48:24</CheckedInTimeStamp> 
       </MyDashboard> 
      </GetMyDashboardResult> 
     </GetMyDashboardResponse> 
    </soap:Body> 
</soap:Envelope> 

和这里的如何我“M试图完成它:

NSMutableArray *res = [[NSMutableArray alloc] init]; 

CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:XMLData options:0 error:nil] autorelease]; 

NSArray *nodes = NULL; 
nodes = [doc nodesForXPath:@"//MyDashboard" error:nil]; 

for (CXMLElement *node in nodes) 
{ 
     NSMutableDictionary *item = [[NSMutableDictionary alloc] init]; 
     int counter; 
     for(counter = 0; counter < [node childCount]; counter++) 
     { 
      [item setObject:[[node childAtIndex:counter] stringValue] forKey:[[node childAtIndex:counter] name]]; 
     } 
     [item setObject:[[node elementsForName:@"Profile"] stringValue] forKey:@"profileName"]; // <------ this magical arrow is pointing to the area of interest 
    NSLog(@"petla"); 
     [res addObject:item]; 
     [item release]; 
} 

NSLog(@"%@", res); 
[res release]; 

`

感谢您的帮助。

[node elementsForName]将返回NSArray,所以你绝对不能使用stringValue。创建临时NSArray,设置elementsForName,检查它的对象数是否大于0,取objectAtIndex:0,你很好走!