【问题标题】:Duplicate data while NSXMLParser reading xml-fileNSXMLParser 读取 xml 文件时重复数据
【发布时间】:2019-11-13 05:55:05
【问题描述】:

我有这样的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <background>assets/_image.png</background>
    <items>
        <item type='test1' position='6' x='123' y='456'>
            my_way
        </item>
        <item type='test2' position='8' x='456' y='123'>
            another_way
        </item>

.......................

我使用 NSXMLParser 阅读它:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if ([self.currentTag isEqualToString:@"item"]) {
        [self addItemForAttributes:self.currentAttributes withValue:string];

        NSLog(@"%@", self.items.lastObject.type);
        NSLog(@"%@", self.items.lastObject.position);
        NSLog(@"%@", NSStringFromCGPoint(self.items.lastObject.coordinate));
        NSLog(@"%@", self.items.lastObject.value);
    }
}

我将项目写入项目数组。但是当我在控制台中阅读时,有些项目看起来是重复的。

2019-07-02 17:25:53.326939+0300 Game[1280:235820] test1
2019-07-02 17:25:53.327083+0300 Game[1280:235820] 6
2019-07-02 17:25:53.327445+0300 Game[1280:235820] {123, 456}
2019-07-02 17:25:53.327671+0300 Game[1280:235820] my_way
2019-07-02 17:25:53.327946+0300 Game[1280:235820] test1
2019-07-02 17:25:53.328021+0300 Game[1280:235820] 6
2019-07-02 17:25:53.328301+0300 Game[1280:235820] {123, 456}
2019-07-02 17:25:53.328348+0300 Game[1280:235820] 
2019-07-02 17:25:53.328991+0300 Game[1280:235820] test1
2019-07-02 17:25:53.329112+0300 Game[1280:235820] 6

如何解决?

【问题讨论】:

  • 您的问题中缺少太多信息。您发布的代码有许多您没有告诉我们的变量。另请注意,foundCharacters 可以多次调用。通常,您在元素启动时初始化可变字符串。在每次调用foundCharacters 时将string 附加到可变字符串,然后在元素结束时查看结果。
  • @maddy,是的,我刚刚注意到了。

标签: ios nsxmlparser nsxmlparserdelegate


【解决方案1】:

委托方法(找到的字符)调用了几次,我为它设置了条件(过滤空字符串),所以它解决了我的问题。

【讨论】:

  • 这不是一个好的解决方案。对于较长的字符串,可以多次调用foundCharacters,每次调用一段较长的字符串。不要假设对foundCharacters 的每次调用都包含一个完整的值。
猜你喜欢
  • 2011-05-14
  • 2011-10-30
  • 2012-01-22
  • 1970-01-01
  • 2016-05-08
  • 2016-10-04
  • 2023-03-26
  • 2019-03-28
  • 1970-01-01
相关资源
最近更新 更多