سؤال

How to parse the xml tags with empty values to get null values using NSXMLParser. I'm using the following code :

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
    if ([elementName isEqualToString:@"Video"])
    {
        isStatus = YES;
    }
    if ([elementName isEqualToString:@"ArrayOfVideo"])
    {
        isStatus = NO;
    }
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    currentNodeContent = (NSMutableString *)[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if (isStatus)
    {
        if ([elementName isEqualToString:@"MediaOriginalFileName"])
        {
            [originalFileAry addObject:currentNodeContent];
        }
        if ([elementName isEqualToString:@"MediaType"])
        {
            [typeArray addObject:currentNodeContent];
        }
        if ([elementName isEqualToString:@"VideoMediaSource"])
        {
            [tableda addObject:currentNodeContent];
        }
        if ([elementName isEqualToString:@"VideoThumbnail"])
        {
            [tableImg addObject:currentNodeContent];
        }
        if ([elementName isEqualToString:@"VideoTitle"])
        {
            [tableData addObject:currentNodeContent];
        }
    }
}

here I'm not getting the empty values for the tag "VideoThumbnail".. Please help me to solve this...

هل كانت مفيدة؟

المحلول

this is what i tried ,and i found empty string, as expected from your example.

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    NSLog(@"the tag is %@",elementName);
if([elementName isEqualToString:@"VideoThumbnail"])
    {
        NSLog(@"video thumbnail tag arrived");
        datastringThumbnail =[[NSMutableString alloc]init];
    }

}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
 if(datastringThumbnail)
 {
   datastringThumbnail = [NSMutableString stringWithFormat:@"%@",string];
 }


}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
  {
    if([elementName isEqualToString:@"VideoThumbnail"])
        NSLog(@"the string is : %@",datastringThumbnail);
    // [tableImg addObject:currentNodeContent];

    //  currentNodeContent is datastringThumbnail in my case
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
    NSLog(@"the string we get is %@",datastringThumbnail);
}

FYI, datastringThumbnail is mutable string that will store you data of thumbnail tag(if any). As in your case there was no data in that tag, this string was empty. Use it wherever you want.

نصائح أخرى

Actually, thing is that your method

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

{

}

is not being called since there are no data inside that particular data. So in following method ,you can do as follow :

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

{

if (isStatus)
{

    if ([elementName isEqualToString:@"VideoThumbnail"])
    {
        if([currentContent Length]>0)
        {
        [tableImg addObject:currentNodeContent];
        }
        else
        {
            [tableImg addObject:@" "];
         }
    }

}

}

forgive my indentation... Also TBXML parsing is much faster and easier way to work with xml parsing. you can directly give names of tags and their child nodes.

You try in

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

May be you get the getting the empty values for the tag "VideoThumbnail".

Following link useful for you.

https://developer.apple.com/library/ios/samplecode/SeismicXML/Listings/SeismicXML_APLParseOperation_m.html#//apple_ref/doc/uid/DTS40007323-SeismicXML_APLParseOperation_m-DontLinkElementID_11

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top