0

i noticed strange problem in sdk 3.0. When i parse XML everything works fine in any sdk 2.x but sdk 3.0 doesn't it.

I didn't find any difference in NSXMLParser but any 2.x sdk works fine and 3.0 doesn't. If anybody met such problem and tell me how to u solve it? -> rssParser is NSXmlParser object.

In sdk 3.0

i call this method.[rssParser parse];

then the first method my parser called is this

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

and after that it does nothing.

when i select sdk 2.2.1

then also it calls this method

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

but parser doesn't stop parsing it continue with calling other delegates of NSXmlParser.

Parse error is same in both

Error 65,Description: (null), Line: 1, Column: 60

This is the first line

!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" with < > on both end

4

4 に答える 4

3

さて、あなたは NSXMLParser で HTML ファイルを解析しようとしています。NSXMLParser には有効な XML ファイルが必要で、HTML ファイルは有効な XML ファイルではありません。たとえば、doctype は有効な XML ではありません。仕事に間違った「ツール」を使用しています。

3.x では動作せず、2.x では動作する理由はわかりません。結局、動作に変更があったようです。

NSXMLParser ではなく、libxml2 を使用して HTML ファイルを解析することをお勧めします。Libxml2 を使用して、「実際の」HTML を解析できます。

この StackOverflow トピックを参照してください:
iPhone での HTML の解析

于 2009-11-12T10:10:16.247 に答える
1

実際の問題は、3.0 では NSXmlparser がより制限されており、エラーを含む 3.0 のファイルを解析しないことです。Yannick Comperol による回答は正しいです。問題を解決するために libxml2 を使用しました。コードを取得するには、このリンクを参照してください。解析のために

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

于 2009-11-27T04:02:47.233 に答える
0

私のxmlファイルにエラーが含まれています

を削除すると、問題は解決します。OS2.2.1のNSXMLParserで正常に機能していた理由がわかりません。xmlファイルのエラーを無視している可能性があります。

于 2009-11-26T09:47:25.553 に答える
0

xml にエラーがあり、2.x パーサーは通過する可能性がありますが、3.0 パーサーはより厳密で停止するようです。

このエラーの原因となる最小の xml を投稿できますか?

サム

于 2009-11-12T10:11:13.347 に答える