Web サイトから HTML を解析するために NSXMLParser を使用しています。テストサイトは私の管理下にありますが、運用サイトは管理できません。
問題は、パーサーが「悪い」文字を含む JavaScript に遭遇した場合です。たとえば、JavaScript を含むif(screen.width<=521)
. 問題はコード内の < です。問題はわかりますが、それを回避する良い方法があるかどうかはわかりません。(NSXMLParser は NSXMLParserErrorDomain エラー 68 を報告しています。その理由はわかります。<= を新しいタグの開始として扱っていますが、= は有効なタグ名文字ではありません...)。しかし、それから私は何をしif(var<20)
ますか?
私は実際には特定のコンテンツには興味がないので、たとえば "<=" や ">=" (など) のグローバルな置換/削除などを行うことができますが、回避するために NSXMLParser を使用していたため、いくつかの点で混乱しているように見えますコンテンツをいじり始める必要があります。置換が最善の方法である場合、「<=」と「>=」を想定できますが、他に含めるべきシーケンスはありますか?
私は Cocoa を初めて使用するので、明らかなことを見落としている可能性があります。その場合、多くの謝罪をします。私は、他の人が同様の問題を見つけたのを見ましたが、質問から良い方法を得ることができませんでした.
エラーを正常に処理していますが (きちんとした方法で)、アプリが意図したことを実行できていません。つまり、エラーを処理するのではなく、エラーを回避する必要があります。
背景: そのアプリケーションは、html で「前」と「後」の比較を行い、変更を探しています。「<=」を本当に奇妙なものに交換し、必要に応じて元に戻すことができます。最初に置換コンテンツのデータをチェックして、可能性のあるあいまいさを排除することもできます (たとえば、ダウンロードしたページにない UID シーケンスを見つけ、「<=」を UID シーケンスに置き換え、ページを解析し、必要に応じて UID を「<=」に置き換えます)。 、">="についても同様です。
(たとえば、libxml2 の libtidy を調べましたが、簡単なドキュメントを見つけることができず、問題が解決しない場合は、そのようなルートで起動することに慎重です。)