0

コードがあります

`-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    NSLog(@"%@",elementName);
    if ([elementName isEqual:@"impproject"]) {
        impprojectdata=[[impProjectData  alloc]init];
        [impprojectdata setParentParserDelegate:self];
        [parser setDelegate:impprojectdata];
    }
}

`

それからここに来ます:

    ` -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
        {
        NSLog(@"did start parser:%@", elementName);
        if ([elementName isEqual:@"project"]){

            ProjectDataItem *project=[[ProjectDataItem alloc]init];
            [project setParentParserDelegate:self];
            [parser setDelegate:project];
            [items addObject:project];
           }   
        }`


-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    NSLog(@"found character:%@", string);
    [currentString appendString:string];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    NSLog(@"did end parser:%@", elementName);
     currentString=nil;
    if ([elementName isEqual:@"improject"]) {
        [parser setDelegate:parentParserDelegate];
        NSLog(@"items.count is %d",items.count);

    }
}

それからここに

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    NSLog(@"startElement %@",elementName);
    if ([elementName isEqual:@"DWMC_CN"]) {
        currentString=[[NSMutableString alloc]init];
        self.name=currentString;
    }else if ([elementName isEqual:@"CZXMMC_CN"]){
        currentString=[[NSMutableString alloc]init];
        self.title=currentString;
    }else if ([elementName isEqual:@"CNNAME"]){
        currentString=[[NSMutableString alloc]init];
        self.name=currentString;
    }else if ([elementName isEqual:@"COMPANY"]){
        currentString=[[NSMutableString alloc]init];
        self.title=currentString;
    }
}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [currentString appendString:string];
}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    currentString =nil;
    if ([elementName isEqual:@"project"]) {
        [parser setDelegate:parentParserDelegate];
    }
}

次に、2 番目の部分のコードが返されます。

それで私の質問があります。配列「items」にオブジェクトを1つだけ追加します。

理由がわかりません...... githubリンクは次のとおりです:github.com/TedWei/gaojiaohui

私を助けてください 。iOS の新人、かわいそう。

elementName がプロジェクトである理由がわかりません。新しいオブジェクトを作成せず、配列に追加しません。それはちょうど終了します....

私の英語でごめんなさい。助けてください。

4

1 に答える 1

0

ここで利用可能な既製のクラスを使用できます: http://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/

xml データをパスリングした後、辞書が返されます。

于 2013-03-24T12:06:08.987 に答える