iphoneSDK和NSXMLParser问题
所以有一个XML文件,它解析得非常好,直到我找到一个元素,其中有一个奇怪的标记。 xml文件看起来有点像这样iphoneSDK和NSXMLParser问题,iphone,xml,sdk,nsxmlparser,Iphone,Xml,Sdk,Nsxmlparser,所以有一个XML文件,它解析得非常好,直到我找到一个元素,其中有一个奇怪的标记。 xml文件看起来有点像这样 <xml> <badtag><![CDATA[ This is the text that i want ]]> </badtag> </xml> 由于某种原因,当它接触到“that*”标签时,应用程序会自动启动。下一个视图将加载,但在此之后它不会执行任何正确的操作。基本上,它加载一个空白表视图,因为它从不调用“Ce
<xml>
<badtag><![CDATA[ This is the text that i want ]]> </badtag>
</xml>
由于某种原因,当它接触到“that*”标签时,应用程序会自动启动。下一个视图将加载,但在此之后它不会执行任何正确的操作。基本上,它加载一个空白表视图,因为它从不调用“CellForRowatineXpath”(或任何其他基本表方法)
对此我完全没有任何解释。如果我删除该标记,我就可以让它完全加载并解析XML文件
是它们的名称,我可以在运行时搜索整个XML文件并删除“”的所有实例
大量编辑:
我刚刚注意到我是否打字
<!C D A T A(此处的任何文本都会消失)]>在这里,它也会屏蔽所有文本 “”是HTML保留字符以及其他一些字符,需要对它们进行转义才能正确传递,否则将产生错误。有效的XML应该已经转义了这些字符,因此应该在服务器端对其进行修复 如果您使用的是NSXMLParser,并且您尝试通过它运行无效的输入(如上面所述),那么它将产生错误并停止传递XML的内容
如果您没有访问源XML的权限,请留下评论,我会看看是否可以找到人们修复它的方法。我没有访问该文件的权限,但我想我已经回答了自己的问题。当我意识到这会导致这个网站出现问题后,我对CDATA做了更多的研究。@Devent:是的,您可以在CDATA回调方法中捕获数据。并让解析器执行其后续任务。我认为,如果您使用普通的libxml库,您将有更多关于解析xml文件的概念。
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
{
NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
}