2012-08-27 3 views
0

raptureXML을 사용하여 XML <forecast .../> 태그에서 데이터를 추출하고 있습니다.RaptureXML에서 어린이 태그를 가져올 수 없습니다.

이것은 내가 앞으로 꽤 직선 권리 raptureXML

RXMLElement *rootXML = [RXMLElement elementFromXMLString:XML encoding:NSUTF8StringEncoding]; 

[rootXML iterate:@"forecast" usingBlock:^(RXMLElement *element) 
    { 
     NSString *high = [element attribute:@"low"]; 
     NSLog(@"high: %@", high); 
    }]; 

    NSArray *forecast = [rootXML children:@"forecast"]; 
    NSLog(@"[forecast count]: %d", [forecast count]); 

이 코드를 사용하는 XML

<?xml version="1.0" ?> 
<weatherdata> 
<weather weatherlocationname="Chicago, IL"> 

<forecast low="67" high="86" skycodeday="34" skytextday="Mostly Sunny" date="2012-08-27" day="Monday" shortday="Mon" precip="0" /> 

<forecast low="66" high="82" skycodeday="34" skytextday="Mostly Sunny" date="2012-08-28" day="Tuesday" shortday="Tue" precip="0" /> 

<forecast low="66" high="82" skycodeday="34" skytextday="Mostly Sunny" date="2012-08-29" day="Wednesday" shortday="Wed" precip="0" /> 

<forecast low="68" high="88" skycodeday="32" skytextday="Sunny (Clear)" date="2012-08-30" day="Thursday" shortday="Thu" precip="0" /> 

<forecast low="70" high="90" skycodeday="34" skytextday="Mostly Sunny" date="2012-08-31" day="Friday" shortday="Fri" precip="0" /> 

<toolbar timewindow="60" minversion="1.0.1965.0" /> 
</weather> 
</weatherdata> 

입니까? 하지만 문제는 예측 태그가 없다는 뜻입니다. 즉 NSLog(@"high: %@", high);에 대해서는 아무 것도없고 [forecast count]은 0입니다.

무엇을 놓쳤습니까?

+0

나는 RaptureXML를 사용하지 않은, 그러나 당신이 레이어를 놓친 것 같습니다. 'rootXML'은 아마도'weatherdata '일 것입니다. 그래서 유일한 자식이'예보'자식을 가지고 있기 때문에'예측'자식이 없습니다. 'RXMLElement * weather = [rootXML child : @ "weather"];'를 추가해보십시오. 그런 다음'rootXML' 대신'weather'를 나머지 코드에 사용하십시오. –

+0

당신은 절대적으로 옳습니다! 이것을 답으로 추가하면 받아 들일 것입니다. 귀하의 제안에 따라 작동합니다. –

답변

2

나는 RaptureXML을 사용하지 않았지만 당신이 레이어를 놓친 것처럼 보입니다. rootXMLweatherdata이므로 forecast 개의 자식이 있기 때문에 weather이므로 자식은 forecast입니다. 추가하십시오 :

RXMLElement *weather = [rootXML child:@"weather"]; 

그리고 대신 rootXML의 코드의 나머지 부분에 대한 weather를 사용합니다.

지금처럼 :

RXMLElement *rootXML = [RXMLElement elementFromXMLString:XML encoding:NSUTF8StringEncoding]; 

RXMLElement *weather = [rootXML child:@"weather"]; 

[weather iterate:@"forecast" usingBlock:^(RXMLElement *element) 
{ 
    NSString *high = [element attribute:@"low"]; 
    NSLog(@"high: %@", high); 
}]; 

NSArray *forecast = [weather children:@"forecast"]; 
NSLog(@"[forecast count]: %d", [forecast count]); 
관련 문제