我注意到sdk 3.0中的奇怪问题。 当我解析XML时,在任何sdk 2.x中一切正常,但sdk 3.0不适用。
我在NSXMLParser中没有发现任何差异,但任何2.x sdk工作正常,而3.0则没有。 如果有人遇到这样的问题并告诉我如何解决它? - > rssParser是NSXmlParser对象。
在sdk 3.0中
我称这种方法。[rssParser parse];
然后我的解析器调用的第一个方法就是这个
之后它什么也没做。
当我选择sdk 2.2.1
时然后它也调用这个方法
但解析器不会停止解析它继续调用NSXmlParser的其他委托。
中的解析错误相同
错误65,描述:(null),行:1,列:60
这是第一行
!DOCTYPE html PUBLIC“ - // W3C // DTD HTML 4.01 Transitional // EN”with< >在两端
答案 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文件中的错误。