0

ここでは、一時文字列で xml 応答を取得しています。その xml 応答から 1 つのタグ値を取得する必要があります。

-(void) httpDataDidFinishLoadingWithData:(NSData *)theData
{
    m_activityLoaded=NO;
    temp=[[NSString alloc] initWithData:[dataLoader httpData]  encoding:NSUTF8StringEncoding];
    NSLog(@"TEMP IS TEMP %@", temp);
    parser=[[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:temp]];
    [parser setShouldProcessNamespaces:NO];
    [parser setShouldReportNamespacePrefixes:NO];
    [parser setShouldResolveExternalEntities:NO];
    parser.delegate=self;
    [parser parse];
}

問題は、上記のパーサーの割り当て後に DidStartElement が呼び出されておらず、解析の準備ができていることです。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
    if(![elementName isEqual:@"Result"])
        return;
    woeid = [attributeDict objectForKey:@"woeid"];
    NSLog(@"woeid   %@", woeid);
}

私のXML応答は

<?xml version="1.0" encoding="UTF-8"?>
<Body><woied></woied></Body>

この人たちから私を助けてください。前もって感謝します

4

2 に答える 2

0

? [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:temp]]; ?

[[NSXMLParser alloc] initWithData:theData]; でパーサーを作成する必要があるかもしれません。

于 2012-09-10T07:24:50.270 に答える
0

これを試すことができます:

-(void) httpDataDidFinishLoadingWithData:(NSData *)theData
{
    m_activityLoaded=NO;
    temp=[[NSString alloc] initWithData:[dataLoader httpData]  encoding:NSUTF8StringEncoding];
    NSLog(@"TEMP IS TEMP %@", temp);
    parser=[[NSXMLParser alloc] initWithData:[temp dataUsingEncoding: NSUTF8StringEncoding];
    [parser setShouldProcessNamespaces:NO];
    [parser setShouldReportNamespacePrefixes:NO];
    [parser setShouldResolveExternalEntities:NO];
    parser.delegate=self;
    [parser parse];
}

これでうまくいくと思います。間違ったデータをパーサーに渡していました。

于 2012-09-10T07:34:55.857 に答える