gpt4 book ai didi

ios - NSXMLParser 不适用于某些标签

转载 作者:行者123 更新时间:2023-11-28 22:21:21 28 4
gpt4 key购买 nike

我正在尝试解析一个 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

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

此外,这是我的 parser:found characters 代码,我注释掉了 currentNodeContent,但它仍然不起作用。

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

最佳答案

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

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

你应该有这样的东西:

在您的 didStartElement 函数中:

currentNodeContent = [[NSMutableString alloc] init];

在你的 foundCharacters 函数中:

[currentNodeContent appendString:string];

然后就可以了

关于ios - NSXMLParser 不适用于某些标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20310479/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com