2012-04-08 13 views
1

私はXMLを解析Xcodeでアプリケーションを作成していますが、私はXcodeのXML解析の問題

<description> 
<![CDATA[ 
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/Sg8z_On_Jmc?fs=1" width="580" height="25"> <param name="movie" value="http://www.youtube.com/v/Sg8z_On_Jmc?fs=1" /> <param name="allowFullScreen" value="true" /> </object> 
]]> 
</description> 

がどのようにデータや価値のURLを取得することができ、このコードを解析に問題がありますか?

ありがとうございました。

私のソースコード:.M

// didStartElementその後、初めに、

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

    if (![self currentStringValueTitle]) { 

     [self setCurrentStringValueTitle:[[NSMutableString alloc] initWithCapacity:50]]; 

    } 

    if (![self currentStringValueImage]) { 

     [self setCurrentStringValueImage:[[NSMutableString alloc] initWithCapacity:50]]; 

    } 


    if (![self currentStringValueDescription]) { 

     [self setCurrentStringValueDescription:[[NSMutableString alloc] initWithCapacity:50]]; 

    } 


    [[self currentStringValueTitle] appendString:string]; 
    [[self currentStringValueDescription] appendString:string]; 
    [[self currentStringValueImage] appendString:string]; 

    NSLog(@"Başlık: %@", [self currentStringValueTitle]); 
    NSLog(@"Detay: %@", [self currentStringValueDescription]); 

} 


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

    if ([elementName isEqualToString:@"title"]) { 

     [[self titleArray] addObject:[self currentStringValueTitle]]; 


    } 
    if ([elementName isEqualToString:@"pubDate"]) { 


     [[self descriptionArray] addObject:[self currentStringValueDescription]]; 


    } 

    if ([elementName isEqualToString:@"description"]) { 

     [[self imageArray] addObject:[self currentStringValueImage]]; 
    } 


    [self setCurrentStringValueTitle:nil]; 
    [self setCurrentStringValueDescription:nil]; 
    [self setCurrentStringValueImage:nil]; 


} 

答えて

0

CDATAを使用しての背後にある考え方は、それに内部が何であれ、それはパーサによって無視されるということです...しかし、ありがたいことにNSXMLParserは、このための代替を持っている...

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock 
{ 
    NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding]; 
} 

は今someString別のxml文字列であり、これはNSXMLParserの別のインスタンスを使って解析できます(これはXMLです)。

+0

リピートに感謝します。私は試しましたが、それはそれがすべての説明の行を押して動作しませんでした。私は自分の質問を編集し、私のソースコードを入れました。私を手伝ってくれますか。 –

+0

NSXMLParserの2つのインスタンスが必要であることを私は伝えることができます。ここに完全なコードを書くことができます。 –

+0

それ以上のコードを取らないので元の投稿を編集できませんでした。私はこのリンクを公開しました。 [link](https://docs.google.com/document/d/1iuGDe7fDfkB8E9AzKliqh9KirMWJWLUBiZTiVV6ML2k/edit) 今すぐお世話になります。 –