如何使用空值解析xml标记以使用NSXMLParser获取空值。我正在使用以下代码:
- (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];
}
}
}
这里我没有得到标签“VideoThumbnail”的空值..请帮我解决这个问题......
答案 0 :(得分:0)
实际上,事情是你的方法
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
}
由于该特定数据中没有数据,因此未调用。因此,在以下方法中,您可以执行以下操作:
- (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:@" "];
}
}
}
}
原谅我的缩进...而且TBXML解析是使用xml解析更快更简单的方法。你可以直接给出标签及其子节点的名称。
答案 1 :(得分:0)
这是我尝试过的,我发现了空字符串,正如你的例子所预期的那样。
- (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);
}
仅供参考,datastringThumbnail是可变字符串,用于存储缩略图标记的数据(如果有)。在您的情况下,该标记中没有数据,此字符串为空。随时随地使用它。
答案 2 :(得分:0)
你试试
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
可能是你得到了标签“VideoThumbnail”的空值。
以下链接对您有用。