【问题标题】:NSXMLParser not working on some tagsNSXMLParser 不适用于某些标签
【发布时间】:2013-12-01 08:57:00
【问题描述】:

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

【问题讨论】:

    标签: ios xml parsing


    【解决方案1】:

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

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

    你应该有这样的东西:

    在你的 didStartElement 函数中:

    currentNodeContent = [[NSMutableString alloc] init];
    

    在你的 foundCharacters 函数中:

    [currentNodeContent appendString:string];
    

    然后就可以了

    【讨论】:

    • 我已将此代码添加到我原来的问题中,这有帮助吗?
    • 另外,我注释掉了这一行,得到了很多(null)
    • 我现在遇到另一个标签的问题,如果你有机会,这里是问题:stackoverflow.com/questions/20463277/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 2018-07-30
    • 1970-01-01
    • 2021-07-06
    • 2014-12-17
    相关资源
    最近更新 更多