NSXmlParser无法在iphone SDK 3.0中工作

问题描述:

我注意到sdk 3.0中的奇怪问题。 当我解析XML时,在任何sdk 2.x中一切正常,但sdk 3.0不正确。NSXmlParser无法在iphone SDK 3.0中工作

我没有在NSXMLParser中找到任何区别,但任何2.x sdk都可以正常工作,而3.0不会。 如果有人遇到这样的问题,并告诉我如何解决它? - > rssParser是NSXmlParser对象。

在SDK 3.0

我把这种方法[rssParser解析]。

那么第一种方法我解析器称为是这个

  • (无效)解析器:(*的NSXMLParser)分析器parseErrorOccurred:(NSError *)parseError

之后,它什么都不做。

当我选择SDK 2.2.1

然后还它调用此方法

  • (无效)解析器:(的NSXMLParser *)解析器parseErrorOccurred:(NSError *)parseError

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

解析错误是在两个

错误65,描述相同的:(空),线:1,柱:!60

这是第一线

DOCTYPE HTML PUBLIC“ -// W3C // DTD HTML 4.01 Transitional // EN“与<>两端

+0

也许张贴一些代码,具体究竟哪里出了问题。我没有使用过NSXMLParser,但是我在sdk 3.x中使用了libxml(它基于它),没有问题。 – 2009-11-12 08:12:27

+0

对于2.2.1和3.0 SDK,NSXMLParser对我来说都很合适 – Vladimir 2009-11-12 08:38:57

+0

parserError是什么,两个固件版本都一样吗? – 2009-11-12 09:12:50

其实问题是在3.0 NSXmlparser是更多的限制,它不会解析任何包含任何错误的3.0文件。Yannick Compernol给出的答案是正确的。要解决我使用libxml2的问题。你可以看到这个链接获得代码的解析

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

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

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

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

你可能想看看这个*的话题:
parsing HTML on the iPhone

这听起来像有在XML的错误2.x的解析器可以得到过去,但3.0分析器是更严格和停止。

你可以发布最小的xml,你可以导致这个错误?

山姆

我的XML文件包含错误

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