Metro スタイル アプリの System.Xml 名前空間の XmlReader を使用して、html および xhtml ファイルを解析しようとしています。HTML ドキュメントは必ずしも xml 標準に従ってフォーマットされているとは限らないため、この方法が理想的ではないことは理解していますが、広範な調査の結果、これらのファイルを解析するためのより良い方法を見つけることができませんでした (見落としがある場合は、私は知っている!)。
「 」を含むファイルを読み込もうとすると、アプリがクラッシュし続けます。これは明らかに、エンティティが xml に存在しない html であることが原因です。XmlReader がこの問題を回避できるように、この問題を解決する方法に関する他のいくつかの質問と投稿を読みましたが、私の状況ではどれも機能しません。「 」を「 」として解釈できるようにする設定を XmlReader に追加する方法があるかどうか疑問に思っていました。
これらは、私にとってうまくいかなかった、またはうまくいかない可能性のある解決策です。
アプリがさまざまなソースからの複数の html ファイルを解析し、個々のファイルを手動で編集できないため、html ファイルの " " を " " に手動で変更することはできません。
次のヘッダーで解析しようとしたすべてのファイル: "!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" " http://www.w3.org/TR/xhtml11/DTD/xhtml11. dtd >"
リーダーがその行に到達するとクラッシュします (何らかの奇妙な理由で)。この行を通過する唯一の方法は、DtdProcessing を Ignore に変更することでした。これにより、この行は無視されます。Dtd がエンティティ を宣言した場合、事実上それを元に戻します。
その他の情報: アプリがクラッシュすると言うと、デバッガーによって例外はスローされませんが、アプリは閉じられ、このコードに送られます
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
};
App.gics というファイルに
また、Win8 Metro Style には Visual Studio 2012 を使用しています。