NSXmlParser在iphone sdk 3.0中不起作用

时间:2009-11-12 08:04:31

标签: iphone nsxmlparser

我注意到sdk 3.0中的奇怪问题。 当我解析XML时,在任何sdk 2.x中一切正常,但sdk 3.0不适用。

我在NSXMLParser中没有发现任何差异,但任何2.x sdk工作正常,而3.0则没有。 如果有人遇到这样的问题并告诉我如何解决它? - > rssParser是NSXmlParser对象。

在sdk 3.0中

我称这种方法。[rssParser parse];

然后我的解析器调用的第一个方法就是这个

  • (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError

之后它什么也没做。

当我选择sdk 2.2.1

然后它也调用这个方法

  • (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError

但解析器不会停止解析它继续调用NSXmlParser的其他委托。

中的解析错误相同

错误65,描述:(null),行:1,列:60

这是第一行

!DOCTYPE html PUBLIC“ - // W3C // DTD HTML 4.01 Transitional // EN”with< >在两端

4 个答案:

答案 0 :(得分:3)

好吧,您正在尝试使用NSXMLParser解析HTML文件。 NSXMLParser需要一个有效的XML文件,HTML文件不是有效的XML文件,它们可能是,但几乎所有文件都不是。例如,doctype不是有效的XML。你使用错误的“工具”来完成工作。

它不能在3.x上运行,但在2.x上运行的原因我不知道,看起来行为发生了变化。

我建议使用libxml2来解析HTML文件而不是NSXMLParser。 Libxml2可用于解析“真实世界”的HTML。

您可能希望查看此StackOverflow主题:
parsing HTML on the iPhone

答案 1 :(得分:1)

实际上问题是在3.0中NSXmlparser更加限制,并且它不会解析包含任何错误的3.0中的任何文件。由Yannick Compernol给出的答案是正确的。来解决我使用libxml2的问题。你可以看到这个链接到获取解析的代码

http://cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html

答案 2 :(得分:0)

听起来你的xml中有一个错误,2.x解析器可能会过去,但3.0解析器更严格并且停止。

你可以发布导致此错误的最小xml吗?

萨姆

答案 3 :(得分:0)

我的xml文件包含错误

删除后,问题解决了。 我不知道为什么它在OS 2.2.1中对NSXMLParser工作正常。可能是忽略xml文件中的错误。