NSXMLParser没有处理某些标签

时间:2013-12-01 08:57:01

标签: ios xml parsing

我正在尝试解析xml文件(下面的链接)以获取所有带有标签的文本。我能够做到这一点,但解析器忽略了一个以短划线( - )结尾的行,并将其替换为短划线(参见下面的示例),并且一些带有谈话标记的谈话标记最终会出现在新的空白处线。是什么导致这种情况(即文本编码问题?,错误地解析)。

这是文件:

  

http://www.perseus.tufts.edu/hopper/xmlchunk?doc=Perseus%3Atext%3A1999.02.0055%3Abook%3D1

我使用这样的代码来获取内容:

   - (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
    {
    if ([elementname isEqualToString:@"l"]) {
        NSString *textSoFar = [[NSUserDefaults standardUserDefaults] stringForKey:@"litText"];
        textSoFar = [[NSString alloc] initWithFormat:@"%@\n%@", textSoFar, currentNodeContent];
        [[NSUserDefaults standardUserDefaults] setObject:textSoFar forKey:@"litText"];
    }
    }

问题行的一个例子就在附近,它应该是:

Id metuens, veterisque memor Saturnia belli,
prima quod ad Troiam pro caris gesserat Argis—
necdum etiam causae irarum saevique dolores

但它即将出现:

Id metuens, veterisque memor Saturnia belli,
—
necdum etiam causae irarum saevique dolores

如果您需要更多帮助来理解我的问题,请告诉我,感谢您的帮助。

另外,这是我的解析器:找到字符代码,我注释掉currentNodeContent但它仍然不起作用。:

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

1 个答案:

答案 0 :(得分:2)

在您的foundCharacters方法中您可能设置了currentNodeContent。你应该追加它,因为每个节点可以多次调用它。

另请参阅此问题:NSXMLParser retrieving wrong data from XML tags

你应该有这样的东西:

在您的didStartElement函数中:

currentNodeContent = [[NSMutableString alloc] init];

在你的foundCharacters函数中:

[currentNodeContent appendString:string];

然后它会起作用