【问题标题】:Xcode xml parsing issueXcode xml解析问题
【发布时间】:2012-04-21 03:52:28
【问题描述】:

我正在 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 开头 then;

- (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]; 


}

【问题讨论】:

    标签: iphone xml xcode xcode4 xml-parsing


    【解决方案1】:

    使用CDATA 背后的想法是,其中的任何内容都将被解析器忽略...但幸运的是 NSXMLParser 有一个替代方案...

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

    现在 someString 是你的另一个 xml 字符串,你可以使用另一个 NSXMLParser 实例来解析(这是一个 XML)...希望这会有所帮助。

    【讨论】:

    • 感谢重播。我已经尝试过,但它没有工作它推动了所有的描述行。我已经编辑了我的问题并放置了我的源代码。请你帮帮我。
    • 我可以告诉你,你需要两个 NSXMLParser 实例.. 可以在这里写完整的代码..
    • 我无法编辑原始帖子,因为它不需要更多代码。所以我在这个链接上发表了; link 从现在开始感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-10-02
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多