2010-10-18 44 views
1

所以有一个XML文件,它解析完全罚款,直到我得到一个元素内有奇怪的标记。 xml文件看起来有点像这样。iphoneSDK和NSXMLParser问题

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

由于某些原因,当它接触到“that *”标记时,该应用程序会干草。然后加载下一个视图,然后它不执行任何适当的操作。基本上它会加载一个空白表视图,因为它从不调用“cellForRowAtIndexPath”(或任何其他基本的表格方法)。

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

无论如何,我可以搜索整个XML文件并在运行时删除“< [CDATA [”和“]]>”的所有实例。

巨大编辑:

我刚才注意到,如果我输入

<! C D A T A(无论文字在这里消失)]]>
在这里,它阻止了所有的文字。

回答

0

'<''&'和'>'是HTML保留字符以及一些其他字符,它们需要转义才能正确传递,否则会产生错误。有效的XML应该已经转义了这些字符,所以它应该在服务器端固定。

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

如果您无法访问源XML,请留下评论,我会查看是否可以找到人们修复它的一些方法。

+0

我没有访问该文件,但我想我已经回答了我自己的问题。在我意识到这个网站出现问题后,我对CDATA做了更多的研究。 – 2010-10-18 06:01:24

+0

@Forgotten王朝:是的,您可以通过CDATA回拨方式获取数据。让解析器完成相继的任务。我认为如果你使用普通的libxml库,你将有更多的解析XML文件的概念。 – boom 2010-10-18 10:42:27

0
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock 
{ 
    NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding]; 
}