XML解析不表示与&符号内的元件(XML Parse not showing elements wi

2019-09-28 07:29发布

我试着在我的应用程序来解析一个xml进... XML文件在这个网址

feeds.feedburner.com/blogspot/TUvAW?format=xml

问题是,当我访问描述它分段diplays不同的特殊符号,如引号。 这是描写的特征段我尝试从我的XML解析之一:

<description>Este es mi blog 3&lt;img src="http://feeds.feedburner.com/~r/blogspot/TUvAW/~4/URCV9ModTR0" height="1" width="1"/&gt;</description>

林用的NSXMLParser解析它,这些都是我用我的方法:

XMLParser.m

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if ([elementname isEqualToString:@"item"])
    {
        currentFeed = [Feed alloc];
        isStatus = YES;
    }
    if ([elementname isEqualToString:@"author"])
    {
        isStatus = NO;
    }
}

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if (isStatus)
    {
        if ([elementname isEqualToString:@"description"])
        {
            currentFeed.description = currentNodeContent;
            NSLog(@"%@",currentNodeContent);

        }
        if ([elementname isEqualToString:@"title"])
        {
            currentFeed.content = currentNodeContent;
            NSLog(@"%@",currentNodeContent);

        }
        if ([elementname isEqualToString:@"link"])
        {
            currentFeed.WVUrl = currentNodeContent;
            NSLog(@"%@",currentNodeContent);
        }
    }
    if ([elementname isEqualToString:@"item"])
    {
        [self.feeds addObject:currentFeed];
        currentFeed = nil;
        currentNodeContent = nil;
    }
}

使用这些NSLogs跟踪,即时通讯从剖析得到的字符串,但我的描述节点内容IM是始终显示的只是这一点:>标题和链接节点显示完美。

我想从描述节点的所有该字符串后使用它,但只是我做不到,我不知道什么与此去错了。

Answer 1:

该问题已经通过阿布舍克,罗布和我概括。 但我认为这是值得总结,并出示正确的解决方案。

的主要问题是, parser:foundCharacters:被称为多次为<description>标签,每个呼叫提供一片的描述。

该解决方案是连接件:

XMLParser.h:

NSMutableString* currentNodeContent;

XMLParser.m:

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if (currentNodeContent == nil)
        currentNodeContent = [[NSMutableString alloc] initWithCapacity: 20];
    [currentNodeContent appendString: [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if ([elementname isEqualToString:@"item"])
    {
        currentFeed = [Feed alloc];
        isStatus = YES;
    }
    if ([elementname isEqualToString:@"author"])
    {
        isStatus = NO;
    }
}

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if (isStatus)
    {
        if ([elementname isEqualToString:@"description"])
        {
            currentTweet.description = currentNodeContent;
            NSLog(@"%@",currentNodeContent);

        }
        if ([elementname isEqualToString:@"title"])
        {
            currentTweet.content = currentNodeContent;
            NSLog(@"%@",currentNodeContent);

        }
        if ([elementname isEqualToString:@"link"])
        {
            currentFeed.WVUrl = currentNodeContent;
            NSLog(@"%@",currentNodeContent);
        }
    }
    if ([elementname isEqualToString:@"item"])
    {
        [self.feeds addObject:currentFeed];
        currentFeed = nil;
        [currentNodeContent release];
        currentNodeContent = nil;
    }
}


Answer 2:

在XML文件中的问题是使用“&”字符。

做一本刚刚得到的XML数据在一个字符串,然后替换“&”与任何唯一的字符串,然后分析XML。

虽然展示或使用XML数据的只是检查,如果你所得到的字符串包含在它相同的唯一字符串替换,然后用“&”该字符串。



文章来源: XML Parse not showing elements with & symbol inside