0

ルート要素を取得しようとしています。関数をトリガーしたいルート要素に基づいて。

たとえば、xml は次のようになります。

  <State>
     <Name>California</Name>
     <Time>CA Time.</Time>
     <Time>CA Time2.</Time>
     <Notes>This is a note for California</Notes>
  </State>

次の着信 xml は次のようになります。

  <country>
     <Name>USA</Name>
     <Time>west coast Time.</Time>
  </country>

そのため、ルート要素に基づいて、適切な機能をトリガーしたいと考えています。現在のNSXmlparserデリゲート メソッドを使用しています。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;

しかし、ルート要素をスキップしているようです。最初にルート要素を取得できるメソッドを見逃していませんか?

4

1 に答える 1

4

これをチェックしてください:

- (void)parser:(NSXMLParser *)parser 
didStartElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName 
attributes:(NSDictionary *)attributeDict
{    
    currentKey = nil;
    [currentStringValue release];
    currentStringValue = nil;
    if([elementName isEqualToString:@"State"]){
       // Here you got the your root...
    }
}

- (void)parser:(NSXMLParser *)parser 
foundCharacters:(NSString *)string
{
    if(currentKey){
        if(!currentStringValue){ // Here you got the contents...
            // Store them somewhere in case you need them...
            currentStringValue = [[NSMutableString alloc] initWithCapacity:200];
        }
        [currentStringValue appendString:string];
    }
}

-(void)parser:(NSXMLParser *)parser 
didEndElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName
{
    if([elementName isEqualToString:@"State"]){
        // Do what you want here...
        return;
    }
}

そして、ここにアップルからのリンクがあります。常にドキュメントとそのコード例を読んでください... http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/NSXML_Concepts/NSXML.html#//apple_ref/ doc/uid/TP40001263-SW1

100%確信はありませんが、うまくいくと思います...

したがって、郡の変更を行うことができます。

于 2012-12-10T15:41:44.637 に答える