NSXMLParser心得及重复覆盖问题解决

        我在用这个iOS sdk中的这个类的时候,一直会出现一些莫名其妙的小问题,曾经也做过安卓手机应用这方面的工作,都没问题,但到苹果这边就不行了,就是在解析xml的时候一对标签经常会被解析两遍,第一遍可以读取到正常内容,第二遍则是空内容然后将第一次的内容覆盖,导致最后存储值为空。

        一开始我将标签解读移动到标签结束方法中进行,基本解决了重复读取同一对标签的问题,但是我4个标签中却总有一个标签(<url> </url>)读取仍然出现重复覆盖问题,其余不重复覆盖,而这些的写法都是一样的,所以我怎么也找不出现在是怎么回事了,只好用一些土办法把漏洞补上。第一个方法就是建立一个static整形变量记录读取url标签的次数,每次加一,然后在判断进入url的赋值条件中 && 次数%2 == 0,重复读取的情况得到很好的改善,可是。。仍然有问题,就是最后一次偶数莫名其妙也是空的,……于是,我便想办法要把这个未知的最后一个数去掉,解决办法就是每一次都记录下上一次的有效值,然后在结束标志出,将最后一次不正常的内容还原回去。。。

        这样莫名其妙乱七八糟搞来搞去(不用去完全理解我的意思和在意细节),后来我发现我傻了,其实有一个很简单很有效的方法,就是判断url内容的长度!如果为空,直接将它无视或去掉即可,多好啊!由于我的url内容必定带有『http://』所以我将判断语句写成:

    if ([_tagName isEqualToString:@"url"]) {
        if (currentElementValue.length > 4) { 
            ...
        }
    }

        结果完美运行,哇哈哈,这真是个不错的算法有木有=。=以后再也不用担心xml重复覆盖问题了!!另外,xml解析中,一次的读取内容可能会被断成两次的问题,解决办法就是用可变字符串,然后在一次里面用appendString方法而不用NSMutableString stringWithString:方法,只要在最后结束当前标签的时候将可变字符串的值重置释放为nil就可以了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值