【问题标题】:iphoneSDK and NSXMLParser problemiphoneSDK和NSXMLParser问题
【发布时间】:2010-10-18 05:23:49
【问题描述】:

所以有一个 XML 文件,它解析得非常好,直到我得到一个里面有奇怪标签的元素。 xml文件看起来有点像这样。

<xml>
   <badtag><![CDATA[ This is the text that i want ]]> </badtag>
</xml>

由于某种原因,当它与“that*”标签接触时,应用程序变得混乱。下一个视图会加载,但之后它不会执行任何正确的操作。基本上它会加载一个空白表格视图,因为它从不调用“cellForRowAtIndexPath”(或任何其他基本表格方法)。

对此我绝对没有任何解释。如果我删除该标签,我可以让它加载完美解析 XML 文件。

不管怎样,我可以搜索整个 XML 文件并在运行时删除“”的所有实例。

大量编辑:

我现在才注意到我是否输入


在这里它也屏蔽了所有文本。

【问题讨论】:

    标签: iphone xml sdk nsxmlparser


    【解决方案1】:

    '' 是 HTML 保留字符以及其他一些字符,需要对其进行转义才能正确传递,否则会产生错误。有效的 XML 应该已经对这些字符进行了转义,因此应该在服务器端进行修复。

    如果您正在使用 NSXMLParser 并且您尝试通过它运行无效输入,就像您在上面看到的那样,它将产生错误并停止传递 XML 的内容。

    如果您无权访问源 XML,请发表评论,我会看看是否可以找到人们修复它的方法。

    【讨论】:

    • 我无权访问该文件,但我想我已经回答了我自己的问题。在我意识到它会导致这个网站出现问题后,我对 CDATA 进行了更多研究。
    • @Forgotten Dynasty:是的,你在CDATA回调方法中捕获了数据。并让解析器完成其后续任务。我想如果你使用普通的libxml库,你对解析xml文件会有更多的概念。
    【解决方案2】:
    - (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
    {
        NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
    }
    

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多